<!DOCTYPE html>
<html lang="zh-CN">
<head>
  <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=2">
<meta name="theme-color" content="#222">
<meta name="generator" content="Hexo 4.2.0">
  <link rel="apple-touch-icon" sizes="180x180" href="/images/apple-touch-icon-next.png">
  <link rel="icon" type="image/png" sizes="32x32" href="/images/favicon-32x32-next.png">
  <link rel="icon" type="image/png" sizes="16x16" href="/images/favicon-16x16-next.png">
  <link rel="mask-icon" href="/images/logo.svg" color="#222">

<link rel="stylesheet" href="/css/main.css">


<link rel="stylesheet" href="/lib/font-awesome/css/font-awesome.min.css">

<script id="hexo-configurations">
    var NexT = window.NexT || {};
    var CONFIG = {"hostname":"yoursite.com","root":"/","scheme":"Muse","version":"7.7.1","exturl":false,"sidebar":{"position":"left","display":"post","padding":18,"offset":12,"onmobile":false},"copycode":{"enable":false,"show_result":false,"style":null},"back2top":{"enable":true,"sidebar":false,"scrollpercent":false},"bookmark":{"enable":false,"color":"#222","save":"auto"},"fancybox":false,"mediumzoom":false,"lazyload":false,"pangu":false,"comments":{"style":"tabs","active":null,"storage":true,"lazyload":false,"nav":null},"algolia":{"hits":{"per_page":10},"labels":{"input_placeholder":"Search for Posts","hits_empty":"We didn't find any results for the search: ${query}","hits_stats":"${hits} results found in ${time} ms"}},"localsearch":{"enable":false,"trigger":"auto","top_n_per_article":1,"unescape":false,"preload":false},"motion":{"enable":true,"async":false,"transition":{"post_block":"fadeIn","post_header":"slideDownIn","post_body":"slideDownIn","coll_header":"slideLeftIn","sidebar":"slideUpIn"}}};
  </script>

  <meta property="og:type" content="website">
<meta property="og:title" content="tender healer">
<meta property="og:url" content="http://yoursite.com/index.html">
<meta property="og:site_name" content="tender healer">
<meta property="og:locale" content="zh_CN">
<meta property="article:author" content="YQ Cong">
<meta name="twitter:card" content="summary">

<link rel="canonical" href="http://yoursite.com/">


<script id="page-configurations">
  // https://hexo.io/docs/variables.html
  CONFIG.page = {
    sidebar: "",
    isHome: true,
    isPost: false
  };
</script>

  <title>tender healer</title>
  






  <noscript>
  <style>
  .use-motion .brand,
  .use-motion .menu-item,
  .sidebar-inner,
  .use-motion .post-block,
  .use-motion .pagination,
  .use-motion .comments,
  .use-motion .post-header,
  .use-motion .post-body,
  .use-motion .collection-header { opacity: initial; }

  .use-motion .site-title,
  .use-motion .site-subtitle {
    opacity: initial;
    top: initial;
  }

  .use-motion .logo-line-before i { left: initial; }
  .use-motion .logo-line-after i { right: initial; }
  </style>
</noscript>

</head>

<body itemscope itemtype="http://schema.org/WebPage">
  <div class="container use-motion">
    <div class="headband"></div>

    <header class="header" itemscope itemtype="http://schema.org/WPHeader">
      <div class="header-inner"><div class="site-brand-container">
  <div class="site-meta">

    <div>
      <a href="/" class="brand" rel="start">
        <span class="logo-line-before"><i></i></span>
        <span class="site-title">tender healer</span>
        <span class="logo-line-after"><i></i></span>
      </a>
    </div>
        <p class="site-subtitle">Recording learning gains</p>
  </div>

  <div class="site-nav-toggle">
    <div class="toggle" aria-label="切换导航栏">
      <span class="toggle-line toggle-line-first"></span>
      <span class="toggle-line toggle-line-middle"></span>
      <span class="toggle-line toggle-line-last"></span>
    </div>
  </div>
</div>


<nav class="site-nav">
  
  <ul id="menu" class="menu">
        <li class="menu-item menu-item-home">

    <a href="/" rel="section"><i class="fa fa-fw fa-home"></i>首页</a>

  </li>
        <li class="menu-item menu-item-archives">

    <a href="/archives/" rel="section"><i class="fa fa-fw fa-archive"></i>归档</a>

  </li>
  </ul>

</nav>
</div>
    </header>

    
  <div class="back-to-top">
    <i class="fa fa-arrow-up"></i>
    <span>0%</span>
  </div>


    <main class="main">
      <div class="main-inner">
        <div class="content-wrap">
          

          <div class="content">
            

  <div class="posts-expand">
        
  
  
  <article itemscope itemtype="http://schema.org/Article" class="post-block home" lang="zh-CN">
    <link itemprop="mainEntityOfPage" href="http://yoursite.com/2020/04/07/%E5%8E%8B%E7%BC%A9%E5%8C%85%E9%9A%90%E5%86%99/">

    <span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
      <meta itemprop="image" content="/images/avatar.gif">
      <meta itemprop="name" content="YQ Cong">
      <meta itemprop="description" content="">
    </span>

    <span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
      <meta itemprop="name" content="tender healer">
    </span>
      <header class="post-header">
        <h1 class="post-title" itemprop="name headline">
          
            <a href="/2020/04/07/%E5%8E%8B%E7%BC%A9%E5%8C%85%E9%9A%90%E5%86%99/" class="post-title-link" itemprop="url">压缩包隐写</a>
        </h1>

        <div class="post-meta">
            <span class="post-meta-item">
              <span class="post-meta-item-icon">
                <i class="fa fa-calendar-o"></i>
              </span>
              <span class="post-meta-item-text">发表于</span>

              <time title="创建时间：2020-04-07 22:28:00" itemprop="dateCreated datePublished" datetime="2020-04-07T22:28:00+08:00">2020-04-07</time>
            </span>
              <span class="post-meta-item">
                <span class="post-meta-item-icon">
                  <i class="fa fa-calendar-check-o"></i>
                </span>
                <span class="post-meta-item-text">更新于</span>
                <time title="修改时间：2020-04-16 23:44:26" itemprop="dateModified" datetime="2020-04-16T23:44:26+08:00">2020-04-16</time>
              </span>

          

        </div>
      </header>

    
    
    
    <div class="post-body" itemprop="articleBody">

      
          <p>title：压缩包隐写</p>
<p>date：2020-4-7</p>
<h1 id="压缩包隐写含义"><a href="#压缩包隐写含义" class="headerlink" title="压缩包隐写含义"></a>压缩包隐写含义</h1><p><img src="/2020/04/07/%E5%8E%8B%E7%BC%A9%E5%8C%85%E9%9A%90%E5%86%99/image-20200407215527459.png" alt="image-20200407215527459"></p>
<p><img src="/2020/04/07/%E5%8E%8B%E7%BC%A9%E5%8C%85%E9%9A%90%E5%86%99/image-20200407215727887.png" alt="image-20200407215727887"></p>
<h1 id="常见压缩包格式分析"><a href="#常见压缩包格式分析" class="headerlink" title="常见压缩包格式分析"></a>常见压缩包格式分析</h1><p><img src="/2020/04/07/%E5%8E%8B%E7%BC%A9%E5%8C%85%E9%9A%90%E5%86%99/image-20200407220141049.png" alt="image-20200407220141049"></p>
<p>对于zip文件格式，50 4B 05 06 是文件尾区域的开头标志，文件尾这一共占22个字节的长度，例：<img src="/2020/04/07/%E5%8E%8B%E7%BC%A9%E5%8C%85%E9%9A%90%E5%86%99/image-20200416234341230.png" alt="image-20200416234341230"></p>
<h1 id="zip的三种加密状态"><a href="#zip的三种加密状态" class="headerlink" title="zip的三种加密状态"></a>zip的三种加密状态</h1><p><img src="/2020/04/07/%E5%8E%8B%E7%BC%A9%E5%8C%85%E9%9A%90%E5%86%99/image-20200407220303933.png" alt="image-20200407220303933"></p>
<p>zip有数据区和目录区的区分，只有两个区的全局方式标记位都处在加密位的时候，它才是真加密状态</p>
<p>看图中第一段，50 4B 03 04是<strong>数据区</strong>的开头，后面的两个字节14 00是解压文件所需要的版本标志，再往后两个字节是数据区的一个加密的标记位；往后看黄色部分，50 4B 01 02这部分是另一个区，为<strong>目录区</strong>，50 4B 01 02是目录区的开头，再向后两个字节1F 00表示的是<strong>压缩文件所使用的版本</strong>，再往后的14 00表示的是<strong>解压文件所需要的版本</strong>，再往后的两个字节00 00表示的是目录区的<strong>加密标志位</strong></p>
<p>只有当数据区和目录区的加密标志位都处在00 00的时候，表示zip压缩文件处在没有加密的状态。</p>
<p>当数据区的加密标志位为00 00，目录区的加密标志位为09 00时，表示zip压缩文件处在<strong>伪加密状态</strong>（意思就是没有对文件设置密码，但是解压文件时还是会弹出一个对话框要求输入密码，这样就实现了伪加密的操作，对于这种文件可以查看一下它的文件格式，如果符合伪加密的特点，可直接把目录区的加密标志改回00 00，这样重新解压时，就不会要求输入密码了，就相当于实现了一个解密操作）</p>
<p>而如果数据区和目录区的加密标志位都处在09 00时，表示真加密状态，也就是说压缩包时确实设置了密码</p>
<p>这里不是说一定要设置成09 00，只要9所在位置是奇数位，就表示处在加密状态（比如01 00和09 00表达的含义都是相同的），偶数位的话就表示没有处在加密状态（比如02 00和00 00表达的含义都是相同的）</p>
<h1 id="CTF压缩包隐写考点分析"><a href="#CTF压缩包隐写考点分析" class="headerlink" title="CTF压缩包隐写考点分析"></a>CTF压缩包隐写考点分析</h1><h2 id="示例一：压缩包-图片"><a href="#示例一：压缩包-图片" class="headerlink" title="示例一：压缩包+图片"></a>示例一：压缩包+图片</h2><p><img src="/2020/04/07/%E5%8E%8B%E7%BC%A9%E5%8C%85%E9%9A%90%E5%86%99/image-20200407222725743.png" alt="image-20200407222725743"></p>
<p>（利了通过文件头、文件尾来区分文件的特点，把需要提取的文件它自己那段十六进制数据提取出来，保存成独立的文件，实现文件的分离操作）</p>
<p>这种隐藏为相互的，可互相包含对方，分析文件时，要对文件的格式，尤其是文件头、文件尾进行检查</p>
<h2 id="示例二：压缩包加密"><a href="#示例二：压缩包加密" class="headerlink" title="示例二：压缩包加密"></a>示例二：压缩包加密</h2><p><img src="/2020/04/07/%E5%8E%8B%E7%BC%A9%E5%8C%85%E9%9A%90%E5%86%99/image-20200409214510494.png" alt="image-20200409214510494"></p>
<p>伪加密是可以用winhex打开压缩包，将加密的标志位修改成偶数即可。</p>
<p>压缩包设置密码操作：</p>
<p>​     右击新建一个文本文档，然后选中这个新建的文本文档，右击&gt;</p>
<img src="/2020/04/07/%E5%8E%8B%E7%BC%A9%E5%8C%85%E9%9A%90%E5%86%99/image-20200409215511729.png" alt="image-20200409215511729" style="zoom:50%;">

<img src="/2020/04/07/%E5%8E%8B%E7%BC%A9%E5%8C%85%E9%9A%90%E5%86%99/image-20200409220448928.png" alt="image-20200409220448928" style="zoom:50%;">

<img src="/2020/04/07/%E5%8E%8B%E7%BC%A9%E5%8C%85%E9%9A%90%E5%86%99/image-20200409220600861.png" alt="image-20200409220600861" style="zoom: 67%;">

<p>然后点击确定，就生成了一个压缩包</p>
<p>这里爆破可选择ARPR或<strong>archpr</strong>一类的工具进行爆破</p>
<p> <img src="/2020/04/07/%E5%8E%8B%E7%BC%A9%E5%8C%85%E9%9A%90%E5%86%99/image-20200409221516817.png" alt="image-20200409221516817">点开工具，导入刚才的那个压缩文件<img src="/2020/04/07/%E5%8E%8B%E7%BC%A9%E5%8C%85%E9%9A%90%E5%86%99/image-20200409221639113.png" alt="image-20200409221639113" style="zoom:50%;"></p>
<p><img src="/2020/04/07/%E5%8E%8B%E7%BC%A9%E5%8C%85%E9%9A%90%E5%86%99/image-20200409221912116.png" alt="image-20200409221912116" style="zoom:67%;">如图所示爆破出密码成功</p>
<p>注：<img src="/2020/04/07/%E5%8E%8B%E7%BC%A9%E5%8C%85%E9%9A%90%E5%86%99/image-20200409222144404.png" alt="image-20200409222144404" style="zoom:67%;">刚才爆破勾选的是这个0-9的纯数字，如果勾选ASCII码的话像大写的A-Z或小写的a-z以及其他一些符号的话，爆破区间会更大，爆破速度也会相应降低</p>
<p>如果题目有规定长度的一些限制的话，可在长度这里对它进行更精确的设置，这样的话爆破的速度会更快一些。</p>
<img src="/2020/04/07/%E5%8E%8B%E7%BC%A9%E5%8C%85%E9%9A%90%E5%86%99/image-20200409222516460.png" alt="image-20200409222516460" style="zoom:67%;">

<h2 id="示例三：CRC32碰撞"><a href="#示例三：CRC32碰撞" class="headerlink" title="示例三：CRC32碰撞"></a>示例三：CRC32碰撞</h2><p><img src="/2020/04/07/%E5%8E%8B%E7%BC%A9%E5%8C%85%E9%9A%90%E5%86%99/image-20200409222748681.png" alt="image-20200409222748681"></p>
<p>（看上面右图，被加密文件可以显示出CRC32值，是文件加密之前的CRC32值）</p>
<p>解法：比如写个python脚本，来碰撞出对应字符，它的CRC32如果和被加密文件它的CRC32值一样的话，就相当于将文档中内容碰撞出来，这个时候虽然还是不知道加密密码，但是已经可以读到当中的内容了，也相当于是进行了一个解密操作。</p>
<p>比如：</p>
<p><img src="/2020/04/07/%E5%8E%8B%E7%BC%A9%E5%8C%85%E9%9A%90%E5%86%99/image-20200411200952836-1586610277529.png" alt="image-20200411200952836"></p>
<p>（以下面那个为例）</p>
<p>可以写个脚本：先导入binascii库，将CRC32的值设置为需要碰撞的值，这里为：DBF9C8F7</p>
<p>这里已经知道其长度为4为，并且为数字型，可在1000~10000这个范围内进行一个爆破（1000，10000）：这里相当于爆破了从1000，一直到9999结束所有四位数数字</p>
<p>然后进行一个判断，这里调用了crc32，这个判断的意思是如果这个区间的某个数字的CRC32的值和要碰撞的值相同的话，就将它打印出来</p>
<p>实际上还要将生成的CRC32的值进行一个异或操作，因为在python2版本中binascii.crc32它所计算出来的crc的值域是负的2的31次方<del>正的2的31次方减1，它的计算结果是这个值域中的一个有符号整数。为了和crc做一个对比，还需将生成的crc32的值转化为无符号整数，所以还需对它进行一个十六进制的<strong>和十六进制的8个f（即：&amp;0xffffffff)</strong>对它进行一个异或操作来进行一个转换。如果是在python3中，binascii.crc32它的计算结果是0</del>2的32次方减1之间的一个无符号整数，此时就不需要做一个额外的异或操作了</p>
<p>（本讲解人在他的kali下安装的是python2版本，所以需要做个异或操作）</p>
<p><img src="/2020/04/07/%E5%8E%8B%E7%BC%A9%E5%8C%85%E9%9A%90%E5%86%99/image-20200411205239075.png" alt="image-20200411205239075"></p>
<p>（在竖线这里加异或操作）加完如下：</p>
<p><img src="/2020/04/07/%E5%8E%8B%E7%BC%A9%E5%8C%85%E9%9A%90%E5%86%99/image-20200411205559924.png" alt="image-20200411205559924"></p>
<p>完整脚本书写如下：</p>
<p><img src="/2020/04/07/%E5%8E%8B%E7%BC%A9%E5%8C%85%E9%9A%90%E5%86%99/image-20200411205707502.png" alt="image-20200411205707502"></p>
<p>（exit(0)：中断该程序，表示程序正常退出）</p>
<p>保存脚本</p>
<p>执行脚本，操作如下</p>
<p><img src="/2020/04/07/%E5%8E%8B%E7%BC%A9%E5%8C%85%E9%9A%90%E5%86%99/image-20200411210759473.png" alt="image-20200411210759473"></p>
<p>以上为数字型的操作。</p>
<p>如果为字符型的，即以压缩包中上面那个文件为例：</p>
<p><img src="/2020/04/07/%E5%8E%8B%E7%BC%A9%E5%8C%85%E9%9A%90%E5%86%99/image-20200411210947358.png" alt="image-20200411210947358"></p>
<p>（对字符拼接，分段来爆破）</p>
<p>将这次范围设置为所有的大小写字母，如图： <img src="/2020/04/07/%E5%8E%8B%E7%BC%A9%E5%8C%85%E9%9A%90%E5%86%99/image-20200411212207817.png" alt="image-20200411212207817"></p>
<p>将CRC32的值设置为需要碰撞的值，这里为：9CBE9D82</p>
<p>各个位进行分段处理：<img src="/2020/04/07/%E5%8E%8B%E7%BC%A9%E5%8C%85%E9%9A%90%E5%86%99/image-20200411212627688.png" alt="image-20200411212627688"></p>
<p>之后拼接一下字符串：<img src="/2020/04/07/%E5%8E%8B%E7%BC%A9%E5%8C%85%E9%9A%90%E5%86%99/image-20200411212606818.png" alt="image-20200411212606818"></p>
<p>然后进行判断（本身就是字符型的，所以直接对s进行处理，而没用str（s））</p>
<p>完整脚本书写如下：</p>
<p><img src="/2020/04/07/%E5%8E%8B%E7%BC%A9%E5%8C%85%E9%9A%90%E5%86%99/image-20200411214227742.png" alt="image-20200411214227742"></p>
<p>保存，执行。</p>
<p>可见也将文档中内容碰撞了出来。</p>
<p><img src="/2020/04/07/%E5%8E%8B%E7%BC%A9%E5%8C%85%E9%9A%90%E5%86%99/image-20200411214639055.png" alt="image-20200411214639055"></p>
<h2 id="示例四：压缩包已知明文攻击"><a href="#示例四：压缩包已知明文攻击" class="headerlink" title="示例四：压缩包已知明文攻击"></a>示例四：压缩包已知明文攻击</h2><p><img src="/2020/04/07/%E5%8E%8B%E7%BC%A9%E5%8C%85%E9%9A%90%E5%86%99/image-20200411214731774.png" alt="image-20200411214731774"></p>
<p>（题目中除了给出压缩包还给出文件A（A为压缩包中两个文件其中的一个））</p>
<p>用已经有的文件去碰撞另外一个文件</p>
<p>（或者是题目中只给了一个压缩包，但是其中的两个文件中的一个是通过伪加密来加密，这个时候可以通过解除伪加密的方式拿到其中的一个文件，然后再利用这个文件去碰撞另外一个真正加密的文件，通过这种方式来实现已知明文攻击）</p>
<p>例题如下：</p>
<p>给出一个压缩包和一个文件，压缩包打开如图所示，其中的那个和给出的文件名字相同的文件很有可能就是那个给出的文件：</p>
<p><img src="/2020/04/07/%E5%8E%8B%E7%BC%A9%E5%8C%85%E9%9A%90%E5%86%99/image-20200411215746900.png" alt="image-20200411215746900"></p>
<p>对这个文件同样进行zip压缩：</p>
<p><img src="/2020/04/07/%E5%8E%8B%E7%BC%A9%E5%8C%85%E9%9A%90%E5%86%99/image-20200411220050352.png" alt="image-20200411220050352" style="zoom:50%;"><img src="/2020/04/07/%E5%8E%8B%E7%BC%A9%E5%8C%85%E9%9A%90%E5%86%99/image-20200411220133595.png" alt="image-20200411220133595" style="zoom:50%;"></p>
<p>然后打开看一下它的CRC32的值</p>
<p><img src="/2020/04/07/%E5%8E%8B%E7%BC%A9%E5%8C%85%E9%9A%90%E5%86%99/image-20200411220352418.png" alt="image-20200411220352418"></p>
<p>和题目中给出的压缩包中的这个文件的CRC32的值是一样的，这样的话就可以用题目中已经给出的文件碰撞出我们想要拿到的那个文件。</p>
<p>这里使用<strong>archpr</strong>工具来进行已知明文攻击。</p>
<p>点击archpr工具</p>
<p>注：在弹出窗口导入压缩文件，选择攻击方式为明文攻击</p>
<img src="/2020/04/07/%E5%8E%8B%E7%BC%A9%E5%8C%85%E9%9A%90%E5%86%99/image-20200411222354811.png" alt="image-20200411222354811" style="zoom:67%;">

<p>这里选择已经获得的文件的zip文件<img src="/2020/04/07/%E5%8E%8B%E7%BC%A9%E5%8C%85%E9%9A%90%E5%86%99/image-20200411222502471.png" alt="image-20200411222502471" style="zoom: 50%;"></p>
<p>弹出攻击成功的提示<img src="/2020/04/07/%E5%8E%8B%E7%BC%A9%E5%8C%85%E9%9A%90%E5%86%99/image-20200411222637165.png" alt="image-20200411222637165" style="zoom:67%;"></p>
<p>发现压缩包加密密码还是没有破解出来，但是我们已经可以获取到我们需要解密的文件的内容了</p>
<p>点击ok，会让我们保存一个新的压缩包：<img src="/2020/04/07/%E5%8E%8B%E7%BC%A9%E5%8C%85%E9%9A%90%E5%86%99/image-20200411223029477.png" alt="image-20200411223029477" style="zoom:33%;"></p>
<p>在这个压缩包里就可以得到解密的文件了</p>
<p>尝试打开刚才保存的新的压缩包，可以看到这里面的文件已经解密了<img src="/2020/04/07/%E5%8E%8B%E7%BC%A9%E5%8C%85%E9%9A%90%E5%86%99/image-20200411223254723.png" alt="image-20200411223254723" style="zoom:50%;"></p>
<p>打开flag.txt文件，获取到了flag</p>

      
    </div>

    
    
    
      <footer class="post-footer">
        <div class="post-eof"></div>
      </footer>
  </article>
  
  
  

        
  
  
  <article itemscope itemtype="http://schema.org/Article" class="post-block home" lang="zh-CN">
    <link itemprop="mainEntityOfPage" href="http://yoursite.com/2020/04/06/python%E6%9C%89%E5%85%B3/">

    <span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
      <meta itemprop="image" content="/images/avatar.gif">
      <meta itemprop="name" content="YQ Cong">
      <meta itemprop="description" content="">
    </span>

    <span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
      <meta itemprop="name" content="tender healer">
    </span>
      <header class="post-header">
        <h1 class="post-title" itemprop="name headline">
          
            <a href="/2020/04/06/python%E6%9C%89%E5%85%B3/" class="post-title-link" itemprop="url">python有关</a>
        </h1>

        <div class="post-meta">
            <span class="post-meta-item">
              <span class="post-meta-item-icon">
                <i class="fa fa-calendar-o"></i>
              </span>
              <span class="post-meta-item-text">发表于</span>

              <time title="创建时间：2020-04-06 22:49:15" itemprop="dateCreated datePublished" datetime="2020-04-06T22:49:15+08:00">2020-04-06</time>
            </span>
              <span class="post-meta-item">
                <span class="post-meta-item-icon">
                  <i class="fa fa-calendar-check-o"></i>
                </span>
                <span class="post-meta-item-text">更新于</span>
                <time title="修改时间：2020-04-16 23:06:14" itemprop="dateModified" datetime="2020-04-16T23:06:14+08:00">2020-04-16</time>
              </span>

          

        </div>
      </header>

    
    
    
    <div class="post-body" itemprop="articleBody">

      
          <p>title: python有关</p>
<p>date：2020-4-6</p>
<h1 id="终端退出python命令行的方法"><a href="#终端退出python命令行的方法" class="headerlink" title="终端退出python命令行的方法"></a>终端退出python命令行的方法</h1><p>两种方法</p>
<ol>
<li>在”&gt;&gt;&gt;” 命令行状态输入 quit()并按回车</li>
<li>在 “&gt;&gt;&gt;”命令行状态输入 ctrl+Z 并按回车</li>
</ol>
<h1 id="python中的import语句"><a href="#python中的import语句" class="headerlink" title="python中的import语句"></a>python中的import语句</h1><p>Python中的import语句是用来调用（导入）模块的。</p>
<p>模块其实就是一些函数和类的集合文件，它能实现一些相应的功能，当我内们需要使用这些功能的时容候，直接把相应的模块导入到我们的程序中，我们就可以使用了。</p>
<p>通常模块为一个文件，直接使用import来导入就好了。可以作为module的文件类型有”.py”、”.pyo”、”.pyc”、”.pyd”、”.so”、”.dll”。</p>
<h1 id="import-sys模块"><a href="#import-sys模块" class="headerlink" title="import sys模块"></a>import sys模块</h1><p>首先，利用import语句 输入 sys模块。（即<strong>import sys</strong>）基本上，这句语句告诉Python，我们想要使用这个模块。sys模块包含了与Python解释器和它的环境有关的函数。</p>
<p>当Python执行import  sys语句的时候，它在sys.path变量中所列目录中寻找sys.py模块。如果找到了这个文件，这个模块的主块中的语句将被运行，然后这个模块将能够被你 使用 。注意，初始化过程仅在我们 第一次 输入模块的时候进行。另外，“sys”是“system”的缩写。</p>
<p>Sys模块函数之多，以下为其中几个：</p>
<h2 id="1-sys-argv"><a href="#1-sys-argv" class="headerlink" title="(1)sys.argv"></a>(1)sys.argv</h2><p>这个可以实现给程序在外部传递参数。如： Test.py</p>
<p>Import sys<br> Print sys.argv[number]</p>
<p>一般情况下，number为0是这个脚本的名字，1，2…则为命令行下传递的参数.如：<br> Test.py脚本内容：<br> import sys</p>
<p> print sys.argv[0]<br> print sys.argv[1]<br> print sys.argv[2]<br> print sys.argv[3]<br> 那么<br> [root@databak scripts]# python text.py arg1 arg2 arg3<br> test.py<br> arg1<br> arg2<br> arg3<br> 看到，对应的关系了吗？<br> sys模块中的argv变量通过使用点号指明——sys.argv——这种方法的一个优势是这个名称不会与任何在你的程序中使用的argv变量冲突。另外，它也清晰地表明了这个名称是sys模块的一部分。</p>
<p>sys.argv变量是一个字符串的列表。特别地，sys.argv包含了 命令行参数 的列表，即使用命令行传递给你的程序的参数。</p>
<p>这里，当我们执行python using_sys.py we are arguments的时候，我们使用python命令运行using_sys.py模块，后面跟着的内容被作为参数传递给程序。Python为我们把它存储在sys.argv变量中。</p>
<p>记住，<strong>脚本的名称总是sys.argv列表的第一个参数</strong>。所以，在这里，’using_sys.py’是sys.argv[0]、’we’是sys.argv[1]、’are’是sys.argv[2]以及’arguments’是sys.argv[3]。注意，Python从0开始计数，而非从1开始。</p>
<h2 id="2-sys-platform"><a href="#2-sys-platform" class="headerlink" title="(2)sys.platform"></a>(2)sys.platform</h2><p> 大家都知道，当今的程序比较流行的是跨平台。简单的说就是这段程序既可以在windows下，换到linux下也可以不加修改的运行起来，听起来就不错。所以，这个函数就可以派上用场了。<br> 假设，我们想实现一个清除终端，linux下用clear, windows下用cls<br> ostype=sys.platform()<br> If ostype==”linux” or ostype==”linux2”:<br> Cmd=”clear”<br> Else:<br>  Cmd=”cls”</p>
<h2 id="3-sys-exit-n"><a href="#3-sys-exit-n" class="headerlink" title="(3) sys.exit(n)"></a>(3) sys.exit(n)</h2><p> 执行至主程序的末尾时,解释器会自动退出. 但是如果需要中途退出程序, 你可以调用sys.exit 函数, 它带有一个可选的整数参数返回给调用它的程序. 这意味着你可以在主程序中捕获对sys.exit 的调用。（注：0是正常退出，其他为不正常，可抛异常事件供捕获!）<br> sys.exit从python程序中退出，将会产生一个systemExit异常，可以为此做些清除除理的工作。这个可选参数默认正常退出状态是0，以数值为参数的范围为：0-127。其他的数值为非正常退出，还有另一种类型，在这里展现的是strings对象类型。</p>
<h2 id="4-sys-path"><a href="#4-sys-path" class="headerlink" title="(4)sys.path"></a>(4)sys.path</h2><p> 在使用模块的某一个功能前，是不是需要导入呢？答案是需要。那import,<strong>import</strong>命令就不用提干嘛的了吧。那在执行import module_name的时候，python内部发生了什么呢？简单的说，就是搜索module_name。根据sys.path的路径来搜索module_name</p>
<p>sys.path包含输入模块的目录名列表。我们可以观察到sys.path的第一个字符串是空的——这个空的字符串表示当前目录也是sys.path的一部分，这与PYTHONPATH环境变量是相同的。这意味着你可以直接输入位于当前目录的模块。否则，你得把你的模块放在sys.path所列的目录之一。</p>
<h2 id="5-sys-modules"><a href="#5-sys-modules" class="headerlink" title="(5)sys.modules"></a>(5)sys.modules</h2><h2 id="6-sys-stdin-sys-stdout-sys-stderr"><a href="#6-sys-stdin-sys-stdout-sys-stderr" class="headerlink" title="(6)sys.stdin,sys.stdout,sys.stderr"></a>(6)sys.stdin,sys.stdout,sys.stderr</h2><p> stdin , stdout , 以及stderr 变量包含与标准I/O 流对应的流对象. 如果需要更好地控制输出,而print 不能满足你的要求, 它们就是你所需要的. 你也可以替换它们, 这时候你就可以重定向输出和输入到其它设备( device ), 或者以非标准的方式处理它们</p>
<h1 id="import-binascii模块"><a href="#import-binascii模块" class="headerlink" title="import binascii模块"></a>import binascii模块</h1><p>binascii用来进行进制和字符串之间的转换</p>
<p>用法，例1：</p>
<p>import binascii<br>s = ‘abcde’<br>h = binascii.b2a_hex(s)    # 字符串转16进制  ‘6162636465’<br>h = binascii.hexlify(s)    # 作用同上</p>
<p>s = binascii.a2b_hex(h)    # 16进制转字符串  ‘abcde’<br>s = binascii.unhexlify(h)  # 作用同上</p>
<p>hex(512)      # 10进制转16进制 ‘0x200’<br>int(0x200)     # 16进制转10进制 512<br>int(‘200’, 16)   # 作用同上<br>int(‘1111’, 2)   # 2进制转10进制  15</p>
<p>例 2：</p>
<p>import binascii as B<br>s = ‘abcde’<br>h = B.b2a_hex(s)    # 字符串转16进制  ‘6162636465’<br>h = B.hexlify(s)    # 作用同上</p>
<p>s = B.a2b_hex(h)    # 16进制转字符串  ‘abcde’<br>s = B.unhexlify(h)  # 作用同上</p>
<p>hex(512)            # 10进制转16进制  ‘0x200’<br>int(0x200)          # 16进制转10进制  512<br>int(‘200’, 16)      # 作用同上<br>int(‘1111’, 2)      # 2进制转10进制   15</p>
<h1 id="import-string模块"><a href="#import-string模块" class="headerlink" title="import string模块"></a>import string模块</h1><figure class="highlight ruby"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">&gt;&gt;</span>&gt; import string</span><br><span class="line"><span class="meta">&gt;&gt;</span>&gt; a=<span class="string">"asfds eea sdf"</span></span><br><span class="line"><span class="meta">&gt;&gt;</span>&gt; a.capitalize()<span class="comment">#将字符串的首字母大写</span></span><br><span class="line"><span class="string">'Asfds eea sdf'</span></span><br><span class="line"><span class="meta">&gt;&gt;</span>&gt; a.count(<span class="string">"a"</span>)<span class="comment">#a字母在字符串中出现的次数</span></span><br><span class="line"><span class="number">2</span></span><br><span class="line"><span class="meta">&gt;&gt;</span>&gt; a.center(<span class="number">50</span>)<span class="comment">#将原字符串用空格填充成一个长度为width的字符串，原字符串内容居中</span></span><br><span class="line"><span class="string">'                  asfds eea sdf                   '</span></span><br><span class="line"><span class="meta">&gt;&gt;</span>&gt; a.decode(encoding=<span class="string">"utf-8"</span>,errors=<span class="string">"strict"</span>)<span class="comment">#以指定编码格式解码字符串</span></span><br><span class="line">u<span class="string">'asfds eea sdf'</span></span><br><span class="line"><span class="meta">&gt;&gt;</span>&gt; a.encode(encoding=<span class="string">"utf-8"</span>,errors=<span class="string">"strict"</span>)<span class="comment">#以指定编码格式编码字符串</span></span><br><span class="line"><span class="string">'asfds eea sdf'</span></span><br><span class="line"><span class="meta">&gt;&gt;</span>&gt; a.endswith(<span class="string">"f"</span>)<span class="comment">#判断字符串是否以字符串f结尾</span></span><br><span class="line">True</span><br><span class="line"><span class="meta">&gt;&gt;</span>&gt; a.find(<span class="string">"e"</span>)<span class="comment">#返回字符串e在字符串中的位置索引，没有则返回-1</span></span><br><span class="line"><span class="number">6</span></span><br><span class="line"><span class="meta">&gt;&gt;</span>&gt; a.index(<span class="string">"f"</span>)<span class="comment">#和find方法一样</span></span><br><span class="line"><span class="number">2</span></span><br><span class="line"><span class="meta">&gt;&gt;</span>&gt; a.isalnum()<span class="comment">#如果str至少有一个字符并且都是字母或数字则返回true，否则返回false</span></span><br><span class="line">False</span><br><span class="line"><span class="meta">&gt;&gt;</span>&gt; a.isalpha()<span class="comment">#如果str至少有一个字符并且都是字母则返回true，否则返回false</span></span><br><span class="line">False</span><br><span class="line"><span class="meta">&gt;&gt;</span>&gt; a.isdigit()<span class="comment">#如果str只包含数字则返回true，否则返回false</span></span><br><span class="line">False</span><br><span class="line"><span class="meta">&gt;&gt;</span>&gt; a.islower()<span class="comment">#如果str中的字符都是小写则返回true</span></span><br><span class="line">True</span><br><span class="line"><span class="meta">&gt;&gt;</span>&gt; a.isspace()<span class="comment">#如果str只包含空格，则返回true，否则返回false</span></span><br><span class="line">False</span><br><span class="line"><span class="meta">&gt;&gt;</span>&gt; a.istitle()<span class="comment">#如果str是标题化的(单词首字母大写)则返回true，否则返回false</span></span><br><span class="line">False</span><br><span class="line"><span class="meta">&gt;&gt;</span>&gt; a.isupper()<span class="comment">#如果str中的字符都是大写则返回true</span></span><br><span class="line">False</span><br><span class="line"><span class="meta">&gt;&gt;</span>&gt; a.ljust(<span class="number">20</span>)<span class="comment">#返回一个原字符串左对齐的并使用空格填充至长度width的新字符串</span></span><br><span class="line"><span class="string">'asfds eea sdf       '</span></span><br><span class="line"><span class="meta">&gt;&gt;</span>&gt; a.partition(<span class="string">"f"</span>)<span class="comment">#用"f"将str切分成三个值</span></span><br><span class="line">(<span class="string">'as'</span>, <span class="string">'f'</span>, <span class="string">'ds eea sdf'</span>)</span><br><span class="line"><span class="meta">&gt;&gt;</span>&gt; a.partition(<span class="string">"h"</span>)<span class="comment">#用"h"将str切分成三个值，但是原字符串中没有h，所以后面加上两''</span></span><br><span class="line">(<span class="string">'asfds eea sdf'</span>, <span class="string">''</span>, <span class="string">''</span>)</span><br><span class="line"><span class="meta">&gt;&gt;</span>&gt; a.replace(<span class="string">"s"</span>,<span class="string">"k"</span>)<span class="comment">#将字符串中的s替换成k</span></span><br><span class="line"><span class="string">'akfdk eea kdf'</span></span><br><span class="line"><span class="meta">&gt;&gt;</span>&gt; a.rfind(<span class="string">"e"</span>)<span class="comment">#类似于find()函数，不过是从右边开始查找</span></span><br><span class="line"><span class="number">7</span></span><br><span class="line"><span class="meta">&gt;&gt;</span>&gt; a.rindex(<span class="string">"e"</span>)<span class="comment">#类似于index()函数，不过是从右边开始</span></span><br><span class="line"><span class="number">7</span></span><br><span class="line"><span class="meta">&gt;&gt;</span>&gt; a.rjust(<span class="number">20</span>)<span class="comment">#返回一个原字符串右对齐的并使用空格填充至长度width的新字符串</span></span><br><span class="line"><span class="string">'       asfds eea sdf'</span></span><br><span class="line"><span class="meta">&gt;&gt;</span>&gt; a.rpartition(<span class="string">"s"</span>)<span class="comment">#类似于partition()函数，不过是从右边开始查找</span></span><br><span class="line">(<span class="string">'asfds eea '</span>, <span class="string">'s'</span>, <span class="string">'df'</span>)</span><br><span class="line"><span class="meta">&gt;&gt;</span>&gt; a.rpartition(<span class="string">"k"</span>)</span><br><span class="line">(<span class="string">''</span>, <span class="string">''</span>, <span class="string">'asfds eea sdf'</span>)</span><br><span class="line"><span class="meta">&gt;&gt;</span>&gt; a.split(<span class="string">"a"</span>)<span class="comment">#以a为分割符切到str</span></span><br><span class="line">[<span class="string">''</span>, <span class="string">'sfds ee'</span>, <span class="string">' sdf'</span>]</span><br><span class="line"><span class="meta">&gt;&gt;</span>&gt; a=<span class="string">"sfsdadf\ngagdasga\ngg"</span></span><br><span class="line"><span class="meta">&gt;&gt;</span>&gt; a.splitlines()<span class="comment">#按照行分割，返回一个包含各行作为元素的列表</span></span><br><span class="line">[<span class="string">'sfsdadf'</span>, <span class="string">'gagdasga'</span>, <span class="string">'gg'</span>]</span><br><span class="line"><span class="meta">&gt;&gt;</span>&gt; a.startswith(<span class="string">"sf"</span>)<span class="comment">#检查字符串是否是以sf开头的，是的话返回true，否则返回false</span></span><br><span class="line">True</span><br><span class="line"><span class="meta">&gt;&gt;</span>&gt; a.zfill(<span class="number">30</span>)<span class="comment">#返回长度为30的字符串，原字符串右对齐，前面填充0</span></span><br><span class="line"><span class="string">'00000000000sfsdadf\ngagdasga\ngg'</span></span><br></pre></td></tr></table></figure>



<p>import string</p>
<p>string.ascii_letters  大小写字母<br>‘abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ’<br>string.ascii_lowercase  小写字母<br>‘abcdefghijklmnopqrstuvwxyz’<br>string.ascii_uppercase  大写字母<br>‘ABCDEFGHIJKLMNOPQRSTUVWXYZ’<br>string.digits  数字<br>‘0123456789’<br>set(string.digits) 集合<br>{‘0’, ‘7’, ‘3’, ‘9’, ‘2’, ‘1’, ‘8’, ‘4’, ‘6’, ‘5’}<br>string.hexdigits  16进制<br>‘0123456789abcdefABCDEF’<br>string.octdigits  8进制<br>‘01234567’<br>string.punctuation 符号<br>‘!”#$%&amp;&#39;()<em>+,-./:;&lt;=&gt;?@[\]^_`{|}~’<br>string.printable<br>‘0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!”#$%&amp;&#39;()</em>+,-./:;&lt;=&gt;?@[\]^_`{|}~ \t\n\r\x0b\x0c’<br>string.whitespace 空白符<br>‘ \t\n\r\x0b\x0c’</p>
<h1 id="str（）函数"><a href="#str（）函数" class="headerlink" title="str（）函数"></a>str（）函数</h1><p>str函数是Python的内置函数，它将参数转换成字符串类型，即人适合阅读的形式。</p>
<p>如，此脚本书写时用到了这个函数</p>
<p><img src="/2020/04/06/python%E6%9C%89%E5%85%B3/image-20200411213825350.png" alt="image-20200411213825350"></p>
<h1 id="os-getcwd-函数的用法"><a href="#os-getcwd-函数的用法" class="headerlink" title="os.getcwd()函数的用法"></a>os.getcwd()函数的用法</h1><p>获得当前路径</p>
<p>在Python中可以使用os.getcwd()函数获得当前的路径。</p>
<p>其原型如下所示：os.getcwd()</p>
<p>该函数不需要传递参数，它返回当前的目录。需要说明的是，当前目录并不是指脚本所在的目录，而是所运行脚本的目录。</p>
<p>&gt;&gt;&gt;import os</p>
<p>&gt;&gt;&gt;print os.getcwd()</p>
<p>D:\Program Files\Python27 </p>
<p>这里的目录即是python的安装目录。若把上面的两行语句保存为getcwd.py，保存于E:\python\盘，运行后显示是E:\python</p>

      
    </div>

    
    
    
      <footer class="post-footer">
        <div class="post-eof"></div>
      </footer>
  </article>
  
  
  

        
  
  
  <article itemscope itemtype="http://schema.org/Article" class="post-block home" lang="zh-CN">
    <link itemprop="mainEntityOfPage" href="http://yoursite.com/2020/04/05/%E7%AC%94%E8%AE%B0%E6%95%B4%E7%90%86%EF%BC%88%E6%97%A0%E5%88%86%E7%B1%BB%EF%BC%89/">

    <span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
      <meta itemprop="image" content="/images/avatar.gif">
      <meta itemprop="name" content="YQ Cong">
      <meta itemprop="description" content="">
    </span>

    <span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
      <meta itemprop="name" content="tender healer">
    </span>
      <header class="post-header">
        <h1 class="post-title" itemprop="name headline">
          
            <a href="/2020/04/05/%E7%AC%94%E8%AE%B0%E6%95%B4%E7%90%86%EF%BC%88%E6%97%A0%E5%88%86%E7%B1%BB%EF%BC%89/" class="post-title-link" itemprop="url">笔记整理（无分类）</a>
        </h1>

        <div class="post-meta">
            <span class="post-meta-item">
              <span class="post-meta-item-icon">
                <i class="fa fa-calendar-o"></i>
              </span>
              <span class="post-meta-item-text">发表于</span>

              <time title="创建时间：2020-04-05 23:44:15" itemprop="dateCreated datePublished" datetime="2020-04-05T23:44:15+08:00">2020-04-05</time>
            </span>
              <span class="post-meta-item">
                <span class="post-meta-item-icon">
                  <i class="fa fa-calendar-check-o"></i>
                </span>
                <span class="post-meta-item-text">更新于</span>
                <time title="修改时间：2020-04-06 22:54:41" itemprop="dateModified" datetime="2020-04-06T22:54:41+08:00">2020-04-06</time>
              </span>

          

        </div>
      </header>

    
    
    
    <div class="post-body" itemprop="articleBody">

      
          <p>title：笔记整理（无分类）</p>
<p>date：2020-4-5</p>
<h1 id="图片题分析步骤："><a href="#图片题分析步骤：" class="headerlink" title="图片题分析步骤："></a>图片题分析步骤：</h1><p>给到图片要分析图片内容、属性中有无有效信息，若其表面上都没有，则有两个选择：使用binwalk或者stepslove来查看一下。</p>
<h1 id="linux下将01串转化成ASCII码"><a href="#linux下将01串转化成ASCII码" class="headerlink" title="linux下将01串转化成ASCII码"></a>linux下将01串转化成ASCII码</h1><p>解题遇到：linux下将01串转化成ASCII码，方法：写个脚本，每<strong>八位一转化</strong></p>
<h1 id="amp-amp-、-、-决定linux命令的执行顺序"><a href="#amp-amp-、-、-决定linux命令的执行顺序" class="headerlink" title="&amp;&amp;、()、||决定linux命令的执行顺序"></a>&amp;&amp;、()、||决定linux命令的执行顺序</h1><p>在执行某个命令时，有时需要依赖前面的命令是否执行成功。</p>
<h2 id="1、-amp-amp"><a href="#1、-amp-amp" class="headerlink" title="1、&amp;&amp;"></a>1、&amp;&amp;</h2><p>1.格式</p>
<p>  command1 &amp;&amp; command2</p>
<p>2.含义</p>
<p>  &amp;&amp;左边的command1执行成功(返回0表示成功)后，&amp;&amp;右边的command2才能被执行。</p>
<p>3.实例</p>
<p>(1)当把文件sql.txt复制一份为sql.bak.txt成功，然后显示副本sql.bak.txt</p>
<p>[root@RHEL5 shell]# cp sql.txt sql.bak.txt &amp;&amp; cat sql.bak.txt </p>
<h2 id="2、"><a href="#2、" class="headerlink" title="2、||"></a>2、||</h2><p>1.格式</p>
<p>  command1 || command2</p>
<p>2.含义</p>
<p>  如果||左边的command1执行失败(返回1表示失败)，就执行&amp;&amp;右边的command2。</p>
<p>3.实例</p>
<p>(1)打印1111.txt的第一列内容，若执行不成功则执行显示facebook.txt的内容</p>
<p>[root@RHEL5 shell]# awk ‘{print $1}’ 1111.txt || cat facebook.txt  </p>
<p>awk: cmd. line:1: fatal: cannot open file `1111.txt’ for reading (No such file or directory)</p>
<p>google 110 5000</p>
<p>baidu 100 5000</p>
<p>guge 50 3000</p>
<p>sohu 100 4500</p>
<p>(2)当打印1111.txt的第一列内容得命令被成功执行，则不执行打印facebook.txt的命令</p>
<p>[root@RHEL5 shell]# awk ‘{print $1}’ facebook.txt || cat facebook.txt</p>
<p>google</p>
<p>baidu</p>
<p>guge</p>
<p>sohu</p>
<h2 id="3、（）"><a href="#3、（）" class="headerlink" title="3、（）"></a>3、（）</h2><p>如果想执行几个命令，则需要用命令分隔符<strong>分号</strong>隔开每个命令，并使用圆括号()把所有命令组合起来。</p>
<p>结合||和&amp;&amp;可以实现复杂的功能。</p>
<p>1.格式(command1；command2；command3;…)</p>
<p>2.实例</p>
<p>(1)使用多个命令，如果sort命令执行成功，先将排序后的文件备份到/root/backup/目录下，然后再打印</p>
<p>sort facebook.txt &gt; facebook.txt.sorted &amp;&amp; (cp  facebook.txt.sorted /root/backup/facebook.txt.sorted;lp  facebook.txt.sorted)</p>
<p>(2)打印facebook.txt文件失败就发邮件告知root用户，并关机</p>
<p>lp facebook.txt.sorted ||(echo “It was not submitted succuessfully” | mail root;init 0) </p>
<h1 id="touch、gedit（含一点脚本内容）"><a href="#touch、gedit（含一点脚本内容）" class="headerlink" title="touch、gedit（含一点脚本内容）"></a>touch、gedit（含一点脚本内容）</h1><p><img src="/2020/04/05/%E7%AC%94%E8%AE%B0%E6%95%B4%E7%90%86%EF%BC%88%E6%97%A0%E5%88%86%E7%B1%BB%EF%BC%89/image-20200405232419603.png" alt="image-20200405232419603"></p>
<p>（图示的touch命令是创建文件，gedit命令是启动GNOME桌面环境下的<a href="https://www.baidu.com/s?wd=文本编辑器&tn=SE_PcZhidaonwhc_ngpagmjz&rsv_dl=gh_pc_zhidao" target="_blank" rel="noopener">文本编辑器</a>gedit。）  （1.py为文件名）写个<strong>脚本</strong>可以这样操作</p>
<h1 id="解压压缩文件"><a href="#解压压缩文件" class="headerlink" title="解压压缩文件"></a>解压压缩文件</h1><p>打开终端，输入uzip.py 然后把图片进去，就可以出现下图中py之后的那一串</p>
<p><img src="/2020/04/05/%E7%AC%94%E8%AE%B0%E6%95%B4%E7%90%86%EF%BC%88%E6%97%A0%E5%88%86%E7%B1%BB%EF%BC%89/image-20200406213825918.png" alt="image-20200406213825918"></p>
<p>可见解压出了8个文件和一个gif图</p>
<h1 id="base64编码之后的字符串的特点："><a href="#base64编码之后的字符串的特点：" class="headerlink" title="base64编码之后的字符串的特点："></a>base64编码之后的字符串的特点：</h1><ul>
<li>字符串只可能包含A-Z，a-z，0-9，+，/，=字符 </li>
<li>字符串长度是4的倍数 </li>
<li>=只会出现在字符串最后，可能没有或者一个等号或者两个等号</li>
</ul>
<p>例：<img src="/2020/04/05/%E7%AC%94%E8%AE%B0%E6%95%B4%E7%90%86%EF%BC%88%E6%97%A0%E5%88%86%E7%B1%BB%EF%BC%89/typora%E5%9B%BE%E7%89%87/image-20200406221336229.png" alt="image-20200406221336229"></p>

      
    </div>

    
    
    
      <footer class="post-footer">
        <div class="post-eof"></div>
      </footer>
  </article>
  
  
  

        
  
  
  <article itemscope itemtype="http://schema.org/Article" class="post-block home" lang="zh-CN">
    <link itemprop="mainEntityOfPage" href="http://yoursite.com/2020/04/04/python%E5%88%87%E7%89%87/">

    <span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
      <meta itemprop="image" content="/images/avatar.gif">
      <meta itemprop="name" content="YQ Cong">
      <meta itemprop="description" content="">
    </span>

    <span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
      <meta itemprop="name" content="tender healer">
    </span>
      <header class="post-header">
        <h1 class="post-title" itemprop="name headline">
          
            <a href="/2020/04/04/python%E5%88%87%E7%89%87/" class="post-title-link" itemprop="url">python切片</a>
        </h1>

        <div class="post-meta">
            <span class="post-meta-item">
              <span class="post-meta-item-icon">
                <i class="fa fa-calendar-o"></i>
              </span>
              <span class="post-meta-item-text">发表于</span>
              

              <time title="创建时间：2020-04-04 22:34:43 / 修改时间：22:39:21" itemprop="dateCreated datePublished" datetime="2020-04-04T22:34:43+08:00">2020-04-04</time>
            </span>

          

        </div>
      </header>

    
    
    
    <div class="post-body" itemprop="articleBody">

      
          <p>title: python切片</p>
<p>date: 2020-4-4 20:00</p>
<p><strong>切片</strong> （slice）作用：从一个字符串序列中取出相应的元素重新组成一个字符串序列</p>
<p> 语法：字符串序列[(开始索引b):(结束索引e)(:(步长s))]（注：（）内括起的部分代表可以省略）</p>
<p>  说明:</p>
<p>   1.　开始索引是切片开始切下的位置，0代表第一个元素，1代表第二个元素,-1代表最后一个</p>
<ol start="2">
<li><p>结束索引是切片的终止索引(但不包含终止点)</p>
</li>
<li><p>步长是切片每次获取完当前元素后移动的方向和偏移量（  步长代表一下次索引的取值的增长值）</p>
</li>
</ol>
<p>​     1)没有步长，相当于取值完成后向右移动一个索引的位置(默认为1)</p>
<p>​     2) 当步长为正数时，取正向切片:</p>
<p>​      <strong>步长默认为1,开始索引默认为0,结束索引默认为len(s)</strong></p>
<p>​    3) 当步长为负整数时，取反向切片：此时，默认的起始位置是最后一个元素，终止位置是第一个元素的前一个位置</p>
<p>例1：定义一个变量S，并给变量S赋值为’ABCDE’,从索引为1的地方开始切，切到索引4，用一个变量a接收并打印结果，代码如下图：</p>
<p><img src="/2020/04/04/python%E5%88%87%E7%89%87/image-20200404210132444.png" alt="image-20200404210132444"></p>
<p>例2：从倒数第二个索引开始切数，切到倒数第1个。代码如下：</p>
<p><img src="/2020/04/04/python%E5%88%87%E7%89%87/image-20200404210224781.png" alt="image-20200404210224781"> </p>
<p>例3：从第一个开始切，结束索引是1000，代码如下：</p>
<p><img src="/2020/04/04/python%E5%88%87%E7%89%87/image-20200404220714991.png" alt="image-20200404220714991"></p>
<p>例4：定义一个变量S，并给变量S赋值，从第一个切到第四个，步长为2，代码如下图：</p>
<p><img src="/2020/04/04/python%E5%88%87%E7%89%87/image-20200404221030561.png" alt="image-20200404221030561"></p>
<p>例5：定义一个变量，从最后一个位置开始切，切到终止位置，代码如下图所示：</p>
<p><img src="/2020/04/04/python%E5%88%87%E7%89%87/image-20200404221116556.png" alt="image-20200404221116556"></p>
<p>练习：1、写一个程序，输入一个字符串，把字符串的第一个字符和最后一个字符去掉，打印出处理后的字符串：代码如下：</p>
<p><img src="/2020/04/04/python%E5%88%87%E7%89%87/image-20200404221239640.png" alt="image-20200404221239640"></p>
<p>2、  输入一个字符串，判断这个字符串是否是回文（回文是指中心对称的文字）如：（上海自来水来自海上）代码如下：</p>
<p><img src="/2020/04/04/python%E5%88%87%E7%89%87/image-20200404221351907.png" alt="image-20200404221351907"></p>
<p>在kali linux终端用python实例如下：</p>
<p><img src="/2020/04/04/python%E5%88%87%E7%89%87/image-20200404202733561.png" alt="image-20200404202733561"></p>
<p><img src="/2020/04/04/python%E5%88%87%E7%89%87/image-20200404222625266.png" alt="image-20200404222625266"></p>
<p>粉色部分为输入部分</p>

      
    </div>

    
    
    
      <footer class="post-footer">
        <div class="post-eof"></div>
      </footer>
  </article>
  
  
  

        
  
  
  <article itemscope itemtype="http://schema.org/Article" class="post-block home" lang="zh-CN">
    <link itemprop="mainEntityOfPage" href="http://yoursite.com/2020/04/02/%E5%85%B3%E4%BA%8Ebinwalk/">

    <span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
      <meta itemprop="image" content="/images/avatar.gif">
      <meta itemprop="name" content="YQ Cong">
      <meta itemprop="description" content="">
    </span>

    <span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
      <meta itemprop="name" content="tender healer">
    </span>
      <header class="post-header">
        <h1 class="post-title" itemprop="name headline">
          
            <a href="/2020/04/02/%E5%85%B3%E4%BA%8Ebinwalk/" class="post-title-link" itemprop="url">关于binwalk</a>
        </h1>

        <div class="post-meta">
            <span class="post-meta-item">
              <span class="post-meta-item-icon">
                <i class="fa fa-calendar-o"></i>
              </span>
              <span class="post-meta-item-text">发表于</span>

              <time title="创建时间：2020-04-02 22:15:41" itemprop="dateCreated datePublished" datetime="2020-04-02T22:15:41+08:00">2020-04-02</time>
            </span>
              <span class="post-meta-item">
                <span class="post-meta-item-icon">
                  <i class="fa fa-calendar-check-o"></i>
                </span>
                <span class="post-meta-item-text">更新于</span>
                <time title="修改时间：2020-04-06 22:48:35" itemprop="dateModified" datetime="2020-04-06T22:48:35+08:00">2020-04-06</time>
              </span>

          

        </div>
      </header>

    
    
    
    <div class="post-body" itemprop="articleBody">

      
          <p>title: 关于binwalk</p>
<p>date: 2020-4-2</p>
<p>1.判断类，一个图片中藏有一个压缩包，或者有其他图片，或者这就是一个压缩包，改了后缀而已。格式：<strong>binwalk 文件名</strong></p>
<p>例如：binwalk一张图片后发现里边有另一张图片的信息（可以用dd工具或者winhex根据位置将另一个文件提取出来）</p>
<p>2.binwalk里面有分离文件的功能。格式：<strong>binwalk -D=类型 文件名</strong>（-D=类型 就会分离出那种类型的文件到一个文件夹里）   例如：binwalk -D=jpeg oddpic.jpg  </p>
<p>例：<img src="/2020/04/02/%E5%85%B3%E4%BA%8Ebinwalk/image-20200402221356678.png" alt="image-20200402221356678"></p>
<p>3.解压类，binwalk后发现是Linux的文件系统或者是固件的文件，<strong>binwalk -eM</strong>，直接将文件解压出来。</p>
<p>4.隐写时，首先可以用它来找到其中的字符串<br>例如：有一道题，它直接给了一个文件，没有后缀，不知道是什么文件，可用 <strong>binwalk 文件名</strong>命令，返回了一个字符串信息，比如得到字符串信息中发现 pohsotohp，是Photoshop的倒写，可有思路往后做题了。找字符串的信息也可以用stegsolve</p>
<p><img src="/2020/04/02/%E5%85%B3%E4%BA%8Ebinwalk/image-20200406215014173.png" alt="image-20200406215014173"></p>
<p>此图片的命令直接包含了所有名字中带8的图片</p>
<p>每个如图所示选中的区域就是一张图片的分析结果</p>
<p><img src="/2020/04/02/%E5%85%B3%E4%BA%8Ebinwalk/image-20200406215111780.png" alt="image-20200406215111780"></p>
<p><img src="/2020/04/02/%E5%85%B3%E4%BA%8Ebinwalk/image-20200406215155074.png" alt="image-20200406215155074"></p>

      
    </div>

    
    
    
      <footer class="post-footer">
        <div class="post-eof"></div>
      </footer>
  </article>
  
  
  

        
  
  
  <article itemscope itemtype="http://schema.org/Article" class="post-block home" lang="zh-CN">
    <link itemprop="mainEntityOfPage" href="http://yoursite.com/2020/03/31/%E5%8F%8C%E5%9B%BE%E9%9A%90%E5%86%99/">

    <span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
      <meta itemprop="image" content="/images/avatar.gif">
      <meta itemprop="name" content="YQ Cong">
      <meta itemprop="description" content="">
    </span>

    <span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
      <meta itemprop="name" content="tender healer">
    </span>
      <header class="post-header">
        <h1 class="post-title" itemprop="name headline">
          
            <a href="/2020/03/31/%E5%8F%8C%E5%9B%BE%E9%9A%90%E5%86%99/" class="post-title-link" itemprop="url">双图隐写</a>
        </h1>

        <div class="post-meta">
            <span class="post-meta-item">
              <span class="post-meta-item-icon">
                <i class="fa fa-calendar-o"></i>
              </span>
              <span class="post-meta-item-text">发表于</span>

              <time title="创建时间：2020-03-31 21:49:08" itemprop="dateCreated datePublished" datetime="2020-03-31T21:49:08+08:00">2020-03-31</time>
            </span>
              <span class="post-meta-item">
                <span class="post-meta-item-icon">
                  <i class="fa fa-calendar-check-o"></i>
                </span>
                <span class="post-meta-item-text">更新于</span>
                <time title="修改时间：2020-04-06 22:49:35" itemprop="dateModified" datetime="2020-04-06T22:49:35+08:00">2020-04-06</time>
              </span>

          

        </div>
      </header>

    
    
    
    <div class="post-body" itemprop="articleBody">

      
          <p>title:双图隐写</p>
<p>date:2020-3-31 15:00</p>
<h1 id="双图隐写"><a href="#双图隐写" class="headerlink" title="双图隐写"></a>双图隐写</h1><p>含义：泛指CTF竞赛中所有以两张图片为解题线索的题型，这里的两张图片可以指给出一张图片然后隐藏了另一张图片，也可以指直接给出了两张图片但是需要两张图片结合分析来提取出隐藏信息。</p>
<p>（考察经常和其他题型联系起来）</p>
<h2 id="考察形式"><a href="#考察形式" class="headerlink" title="考察形式"></a>考察形式</h2><p><img src="/2020/03/31/%E5%8F%8C%E5%9B%BE%E9%9A%90%E5%86%99/image-20200331153335066.png" alt="image-20200331153335066"></p>
<p><img src="/2020/03/31/%E5%8F%8C%E5%9B%BE%E9%9A%90%E5%86%99/image-20200331153601507.png" alt="image-20200331153601507"></p>
<p><img src="/2020/03/31/%E5%8F%8C%E5%9B%BE%E9%9A%90%E5%86%99/image-20200331153641644.png" alt="image-20200331153641644"></p>
<h2 id="双图隐写原理"><a href="#双图隐写原理" class="headerlink" title="双图隐写原理"></a>双图隐写原理</h2><h3 id="图像格式拼接"><a href="#图像格式拼接" class="headerlink" title="图像格式拼接"></a>图像格式拼接</h3><p>  <img src="/2020/03/31/%E5%8F%8C%E5%9B%BE%E9%9A%90%E5%86%99/image-20200331153934742.png" alt="image-20200331153934742"></p>
<p>  <img src="/2020/03/31/%E5%8F%8C%E5%9B%BE%E9%9A%90%E5%86%99/image-20200331154142315.png" alt="image-20200331154142315"></p>
<h3 id="图层叠加"><a href="#图层叠加" class="headerlink" title="图层叠加"></a>图层叠加</h3><p>  <img src="/2020/03/31/%E5%8F%8C%E5%9B%BE%E9%9A%90%E5%86%99/image-20200331154307125.png" alt="image-20200331154307125"></p>
<p>  <img src="/2020/03/31/%E5%8F%8C%E5%9B%BE%E9%9A%90%E5%86%99/image-20200331154439781.png" alt="image-20200331154439781"></p>
<h3 id="图像运算"><a href="#图像运算" class="headerlink" title="图像运算"></a>图像运算</h3><p><img src="/2020/03/31/%E5%8F%8C%E5%9B%BE%E9%9A%90%E5%86%99/image-20200331154637149.png" alt="image-20200331154637149"></p>
<p>（比赛中异或、加减接触较多）</p>
<p><img src="/2020/03/31/%E5%8F%8C%E5%9B%BE%E9%9A%90%E5%86%99/image-20200331154759479.png" alt="image-20200331154759479"></p>
<h2 id="相关考点分析"><a href="#相关考点分析" class="headerlink" title="相关考点分析"></a>相关考点分析</h2><h3 id="示例一：文件直接拼接"><a href="#示例一：文件直接拼接" class="headerlink" title="示例一：文件直接拼接"></a>示例一：文件直接拼接</h3><p><img src="/2020/03/31/%E5%8F%8C%E5%9B%BE%E9%9A%90%E5%86%99/image-20200331155254930.png" alt="image-20200331155254930"></p>
<h4 id="文件分离"><a href="#文件分离" class="headerlink" title="文件分离"></a>文件分离</h4><p>1）linux（可能是）操作系统下，选一个图片，用binwalk命令分析</p>
<p><img src="/2020/03/31/%E5%8F%8C%E5%9B%BE%E9%9A%90%E5%86%99/image-20200331155905348.png" alt="image-20200331155905348"></p>
<p>2）可见本身图片是png图片，还包含一张jpeg图片（在十六进制的212A处），可使用winhex打开这个图像</p>
<p><img src="/2020/03/31/%E5%8F%8C%E5%9B%BE%E9%9A%90%E5%86%99/image-20200331160056672.png" alt="image-20200331160056672"></p>
<p>跳转到偏移处查看一下这张图象：先导入这张图像（就是打开winhex，把那个图像拖进去）</p>
<p>然后下方有个偏移量，点一下，输入212A，选择十六进制，以此跳转到十六进制的212A处，如下：</p>
<p><img src="/2020/03/31/%E5%8F%8C%E5%9B%BE%E9%9A%90%E5%86%99/image-20200331160709643.png" alt="image-20200331160709643"></p>
<p><img src="/2020/03/31/%E5%8F%8C%E5%9B%BE%E9%9A%90%E5%86%99/image-20200331161010616.png" alt="image-20200331161010616"></p>
<p>（图中蓝色光标即为跳转到的位置）可见FF D8为JPEG格式的文件头，前面的IEND为png格式的最后一个数据块，往后数四个字节为校验和。</p>
<p><img src="/2020/03/31/%E5%8F%8C%E5%9B%BE%E9%9A%90%E5%86%99/image-20200331161312315.png" alt="image-20200331161312315"></p>
<p>到这里png格式文件就算结束了，文件尾紧接着就是JPEG格式的文件头，所以这个图片实际是两个不同文件格式的图像无缝衔接。</p>
<p>往后翻，JPEG文件格式的文件尾是FF D9</p>
<p><img src="/2020/03/31/%E5%8F%8C%E5%9B%BE%E9%9A%90%E5%86%99/image-20200331161857976.png" alt="image-20200331161857976"></p>
<p>这里包含了一个完整的jpeg文件结构，所以可以直接把这个图像从原来的png图像中分离出来，复制这个jpeg图像格式的十六进制数据（选中，右击&gt;编辑&gt;复制选块&gt;十六进制数值）</p>
<p><img src="/2020/03/31/%E5%8F%8C%E5%9B%BE%E9%9A%90%E5%86%99/image-20200331162142088.png" alt="image-20200331162142088"></p>
<p>新建一个文件（左上角有个“文件”，点击它&gt;新建），会弹出个框，新建即可。</p>
<p><img src="/2020/03/31/%E5%8F%8C%E5%9B%BE%E9%9A%90%E5%86%99/image-20200331162642350.png" alt="image-20200331162642350"></p>
<p><img src="/2020/03/31/%E5%8F%8C%E5%9B%BE%E9%9A%90%E5%86%99/image-20200331162758704.png" alt="image-20200331162758704"></p>
<p>剪切过去，可新生成一个文件，另存为一下，然后打开它。</p>
<p><img src="/2020/03/31/%E5%8F%8C%E5%9B%BE%E9%9A%90%E5%86%99/image-20200331162937075.png" alt="image-20200331162937075"></p>
<h3 id="示例二：修改文件格式"><a href="#示例二：修改文件格式" class="headerlink" title="示例二：修改文件格式"></a>示例二：修改文件格式</h3><p>（通常是文件格式的简单修复，也就是说，一个文件，最直观的地方就是文件头和文件尾，文件修复通常是对<strong>文件头、文件尾</strong>做一个处理，一般是补全或者是更换来实现修复操作，这个我们主要熟悉常见的文件头和文件尾是非常容易完成的，有时也会涉及到像校验和的一些计算，都是对文件的修复工作）</p>
<p><img src="/2020/03/31/%E5%8F%8C%E5%9B%BE%E9%9A%90%E5%86%99/image-20200331163434940.png" alt="image-20200331163434940"></p>
<p>比如打开一个图片，提示如图所示：</p>
<p><img src="/2020/03/31/%E5%8F%8C%E5%9B%BE%E9%9A%90%E5%86%99/image-20200331163939011.png" alt="image-20200331163939011"></p>
<p>此文件此时处于损毁状态，可用winhex来查看一下这个图像，首先由后缀可看出应该是gif格式文件，虽然这个gif不一定代表真正的文件格式，但可以起到方向引导的作用</p>
<p><img src="/2020/03/31/%E5%8F%8C%E5%9B%BE%E9%9A%90%E5%86%99/image-20200331164250260.png" alt="image-20200331164250260"></p>
<p>看这个89A，如果联想GIF文件格式的话，就是gif文件的一个文件头，一般由GIF89A，或GIF87A构成，这里少了三个字节，所以补全，即插入三个字节（GIF）（在89A前面插入GIF）</p>
<p><img src="/2020/03/31/%E5%8F%8C%E5%9B%BE%E9%9A%90%E5%86%99/image-20200331164701994.png" alt="image-20200331164701994"></p>
<p>补全后另存为一张新的文件，其得到修复了，能够打开了，打开它，打开发现这个gif图跳转速率非常快，可使用<strong>Stegsolve</strong>来导入这张图片</p>
<p><img src="/2020/03/31/%E5%8F%8C%E5%9B%BE%E9%9A%90%E5%86%99/image-20200331164956572.png" alt="image-20200331164956572"></p>
<p><img src="/2020/03/31/%E5%8F%8C%E5%9B%BE%E9%9A%90%E5%86%99/image-20200331165224366.png" alt="image-20200331165224366"></p>
<p><img src="/2020/03/31/%E5%8F%8C%E5%9B%BE%E9%9A%90%E5%86%99/image-20200331165308449.png" alt="image-20200331165308449"></p>
<p><img src="/2020/03/31/%E5%8F%8C%E5%9B%BE%E9%9A%90%E5%86%99/image-20200331165417871.png" alt="image-20200331165417871"></p>
<p><img src="/2020/03/31/%E5%8F%8C%E5%9B%BE%E9%9A%90%E5%86%99/image-20200331165445234.png" alt="image-20200331165445234"></p>
<p>选中那个gif图片点开，然后逐帧查看一下它的每一个组成部分，可使用Analyse&gt;Frame Browser</p>
<p><img src="/2020/03/31/%E5%8F%8C%E5%9B%BE%E9%9A%90%E5%86%99/image-20200331165630255.png" alt="image-2020033116563025"></p>
<p>就可查看到每帧使用什么部分组成了，就可得到所需要信息，如下图为其中一帧：</p>
<p><img src="/2020/03/31/%E5%8F%8C%E5%9B%BE%E9%9A%90%E5%86%99/image-20200331170046879.png" alt="image-20200331170046879"></p>
<h3 id="示例三：文件间接拼接"><a href="#示例三：文件间接拼接" class="headerlink" title="示例三：文件间接拼接"></a>示例三：文件间接拼接</h3><p><img src="/2020/03/31/%E5%8F%8C%E5%9B%BE%E9%9A%90%E5%86%99/%E5%8F%8C%E5%9B%BE%E9%9A%90%E5%86%99/image-20200331170713527.png" alt="image-20200331170713527"></p>
<p>（拼接的更多是一些有意义的数据，这些数据不能直接拿来保存成图片或文件，但可通过一些处理变成我们需要的一些信息，最常见的就是图片的一个base64的编码）</p>
<p>首先winhex导入一张png图片，发现文件最后并不是png文件最后的IEND数据块，所以可以选择搜寻一下IEND数据块（左上角有个搜索，点击它&gt;文本，出现如下，输入IEND</p>
<p><img src="/2020/03/31/%E5%8F%8C%E5%9B%BE%E9%9A%90%E5%86%99/image-20200331173808779.png" alt="image-20200331173808779"></p>
<p><img src="/2020/03/31/%E5%8F%8C%E5%9B%BE%E9%9A%90%E5%86%99/image-20200331173852425.png" alt="image-20200331173852425"></p>
<p>从IEND这个数据块后数四个字节，到达png整个文件的结尾，再往后发现都是数据，</p>
<p><img src="/2020/03/31/%E5%8F%8C%E5%9B%BE%E9%9A%90%E5%86%99/image-20200331175331065.png" alt="image-20200331175331065"></p>
<p>可以看到给出的结构是是base64的编码形式，这种的可以有很多利用方式，最简单的利用方式可以直接把它拖动到浏览器上。选中从数据开始到整个结尾的全部部分，右击&gt;编辑&gt;复制选块&gt;正常（即直接复制ACSII码形式）</p>
<p>把这段数据复制到浏览器上，结果如下：</p>
<p><img src="/2020/03/31/%E5%8F%8C%E5%9B%BE%E9%9A%90%E5%86%99/image-20200331175057595.png" alt="image-20200331175057595"></p>
<p> 这里<img src="/2020/03/31/%E5%8F%8C%E5%9B%BE%E9%9A%90%E5%86%99/image-20200331175232247.png" alt="image-20200331175232247"></p>
<p>有时会填一些十六进制的数据或者一些常见的编码形式，我们可以把这个地方提取出来，对它进行转换，查看一下转换之后的信息</p>
<h3 id="示例四：双图层叠加"><a href="#示例四：双图层叠加" class="headerlink" title="示例四：双图层叠加"></a>示例四：双图层叠加</h3><p><img src="/2020/03/31/%E5%8F%8C%E5%9B%BE%E9%9A%90%E5%86%99/image-20200331175555713.png" alt="image-20200331175555713"></p>
<p>这个不是侧重于文件流，而是侧重于图像的处理，常见的是拿到图片后，stepslove导入之后，来回切几个通道，可能在某个通道写入一个二维码之类的，或者这个图片有个隐藏的图层，正常打开图像的时候显示不出来这个东西，但是通过一些图像软件打开之后就会发现其隐藏的图层。</p>
<p>比如：winhex打开一张png图片</p>
<p><img src="/2020/03/31/%E5%8F%8C%E5%9B%BE%E9%9A%90%E5%86%99/image-20200331180232045.png" alt="image-20200331180232045"></p>
<p>发现在这里看到了Photoshop软件处理过的标志，通常这类型的标志都会涉及到有关于图层方向的考察，可用Photoshop打开一下这种图片，打开后，它默认的在0号图层</p>
<p><img src="/2020/03/31/%E5%8F%8C%E5%9B%BE%E9%9A%90%E5%86%99/image-20200331180801663.png" alt="image-20200331180801663"></p>
<p>比如把一个含flag信息的图片嵌入进去，就拖动那个含flag信息的图片，拖到要嵌入的图片那，如下：</p>
<p><img src="/2020/03/31/%E5%8F%8C%E5%9B%BE%E9%9A%90%E5%86%99/image-20200331182654644.png" alt="image-20200331182654644"></p>
<p>可选择隐藏它</p>
<p><img src="/2020/03/31/%E5%8F%8C%E5%9B%BE%E9%9A%90%E5%86%99/image-20200331182800800.png" alt="image-20200331182800800"></p>
<p>变为如下：</p>
<p><img src="/2020/03/31/%E5%8F%8C%E5%9B%BE%E9%9A%90%E5%86%99/image-20200331182827924.png" alt="image-20200331182827924"></p>
<p>可通过调整图层顺序实现改变图像的显示效果</p>
<p><img src="/2020/03/31/%E5%8F%8C%E5%9B%BE%E9%9A%90%E5%86%99/image-20200331182946226.png" alt="image-20200331182946226"></p>
<p>关于图层隐藏的另一类考察方式：比如修改背景颜色的考察方式，比如QQ收到的图片，它略缩图是一个样（底色为白色），点开之后是另一个样（底色为黑色），这就是通过改变背景颜色实现（用黑色像素和白色像素各弄一张图片，然后把两张图片叠加在一起，就可以实现图片的这么一个变化效果）比如一张图片点开，然后再用浏览器点开，发现效果不一样，这就是通过修改底色来实现的。</p>
<p><img src="/2020/03/31/%E5%8F%8C%E5%9B%BE%E9%9A%90%E5%86%99/image-20200331183701112.png" alt="image-20200331183701112"></p>
<p><img src="/2020/03/31/%E5%8F%8C%E5%9B%BE%E9%9A%90%E5%86%99/image-20200331183729992.png" alt="image-20200331183729992"></p>
<h3 id="示例五：双图像运算"><a href="#示例五：双图像运算" class="headerlink" title="示例五：双图像运算"></a>示例五：双图像运算</h3><p><img src="/2020/03/31/%E5%8F%8C%E5%9B%BE%E9%9A%90%E5%86%99/image-20200331183836842.png" alt="image-20200331183836842"></p>
<p>（经常出现的一种考察方式，这种考察方式套路主要为：如果拿到的是多张图片，一方面可能考察的是<strong>图像运算</strong>，另一方面可能考察的是<strong>信息拼接</strong>，如何区分？如果两张图片看起来完全相同或者看起来有关联，一般都在考察运算，如果两张图片看起来没有什么联系的话，很有可能就是在考察拼接）</p>
<p>如果是考察运算的话，会对两张图片进行比较（这里因为两个图片可能是有一张在另一张里提取出来的，比如说如果用winhex把含的那张的数据复制保存为新图片，别忘了再把这段隐含别的图片的这段数据删去，再把它也另存为一张独立的文件，即一张图片分两张了，再比较），用compare命令查看有哪些不同，若compare结果为一条横线，那么通常就是在考察<strong>异或运算</strong>（相同的地方异或结果为0，不同的地方异或结果非0）（当然，其他运算也可以，比如减运算：相同的数据做差之后就为零了）来求不同数据，运算的结果比如是两张图片不同的地方就是隐藏信息，而如果得到的运算结果图片中，它包含的是多条横线，很有可能就是在考察shu。。。(这没听清)</p>
<p>例子：</p>
<p>有一张实例图片，首先用<strong>binwalk</strong>分析一下。</p>
<p><img src="/2020/03/31/%E5%8F%8C%E5%9B%BE%E9%9A%90%E5%86%99/image-20200401162820947.png" alt="image-20200401162820947"></p>
<p>发现其中还包含其他的png图片，可用<strong>foremost</strong>命令分离出来</p>
<p><img src="/2020/03/31/%E5%8F%8C%E5%9B%BE%E9%9A%90%E5%86%99/image-20200401163056630.png" alt="image-20200401163056630"></p>
<p>发现除了原图还得到两张新生成的图片</p>
<p><img src="/2020/03/31/%E5%8F%8C%E5%9B%BE%E9%9A%90%E5%86%99/image-20200401163717381.png" alt="image-20200401163717381"></p>
<p>很明显是两张被拆开的图片，可以做个加运算</p>
<p>打开<strong>stepslove</strong>，导入其中一张图片，点analyse&gt;image combiner,导入另一张图片</p>
<p><img src="/2020/03/31/%E5%8F%8C%E5%9B%BE%E9%9A%90%E5%86%99/image-20200401164235983.png" alt="image-20200401164235983.png"> </p>
<p>打开之后就可以做一些运算了，这里做加运算。</p>
<p><img src="/2020/03/31/%E5%8F%8C%E5%9B%BE%E9%9A%90%E5%86%99/image-20200401165023091.png" alt="image-20200401165023091"></p>
<p>相当于是对两个图像做了一个加和，然后把结果保存成一个新图片</p>
<p><img src="/2020/03/31/%E5%8F%8C%E5%9B%BE%E9%9A%90%E5%86%99/image-20200401165633988.png" alt="image-20200401165633988"></p>
<p>之后把二维码尝试一下读取，可用下面这个软件。</p>
<p><img src="/2020/03/31/%E5%8F%8C%E5%9B%BE%E9%9A%90%E5%86%99/image-20200401165732332.png" alt="image-20200401165732332">)<img src="/2020/03/31/%E5%8F%8C%E5%9B%BE%E9%9A%90%E5%86%99/image-20200401165746558.png" alt="image-20200401165746558"></p>
<p><img src="/2020/03/31/%E5%8F%8C%E5%9B%BE%E9%9A%90%E5%86%99/image-20200401165922612.png" alt="image-20200401165922612.png"></p>
<p>可见，得到了信息。</p>
<h3 id="示例六：一图分多图"><a href="#示例六：一图分多图" class="headerlink" title="示例六：一图分多图"></a>示例六：一图分多图</h3><p><img src="/2020/03/31/%E5%8F%8C%E5%9B%BE%E9%9A%90%E5%86%99/image-20200401170146733.png" alt="image-20200401170146733"></p>
<p>这个考点也是对前面那些考点的综合利用，对分离出来的每张图片的各自利用情况，比如说每张图片本身可以独立的分析出一些信息，那么很有可能就是在考信息拼接，如果每张图片没有办法分析出有效信息的话，那么很有可能考察的是多个图片的运算。</p>
<p>一般多图的话，尤其是五六张甚至更多，考察方式只有一个，一般就是<strong>信息拼接</strong></p>
<p>（即各自图片分析各自信息，然后把信息拼接起来）</p>

      
    </div>

    
    
    
      <footer class="post-footer">
        <div class="post-eof"></div>
      </footer>
  </article>
  
  
  

        
  
  
  <article itemscope itemtype="http://schema.org/Article" class="post-block home" lang="zh-CN">
    <link itemprop="mainEntityOfPage" href="http://yoursite.com/2020/02/21/%E9%9A%90%E5%86%99%E6%9C%AF%E5%9C%A8CTF%E6%AF%94%E8%B5%9B%E4%B8%AD%E7%9A%84%E5%BA%94%E7%94%A8%E4%B9%8B%E6%96%87%E6%9C%AC%E9%9A%90%E5%86%99/">

    <span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
      <meta itemprop="image" content="/images/avatar.gif">
      <meta itemprop="name" content="YQ Cong">
      <meta itemprop="description" content="">
    </span>

    <span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
      <meta itemprop="name" content="tender healer">
    </span>
      <header class="post-header">
        <h1 class="post-title" itemprop="name headline">
          
            <a href="/2020/02/21/%E9%9A%90%E5%86%99%E6%9C%AF%E5%9C%A8CTF%E6%AF%94%E8%B5%9B%E4%B8%AD%E7%9A%84%E5%BA%94%E7%94%A8%E4%B9%8B%E6%96%87%E6%9C%AC%E9%9A%90%E5%86%99/" class="post-title-link" itemprop="url">隐写术在CTF比赛中的应用之文本隐写</a>
        </h1>

        <div class="post-meta">
            <span class="post-meta-item">
              <span class="post-meta-item-icon">
                <i class="fa fa-calendar-o"></i>
              </span>
              <span class="post-meta-item-text">发表于</span>

              <time title="创建时间：2020-02-21 23:51:04" itemprop="dateCreated datePublished" datetime="2020-02-21T23:51:04+08:00">2020-02-21</time>
            </span>
              <span class="post-meta-item">
                <span class="post-meta-item-icon">
                  <i class="fa fa-calendar-check-o"></i>
                </span>
                <span class="post-meta-item-text">更新于</span>
                <time title="修改时间：2020-03-30 18:46:03" itemprop="dateModified" datetime="2020-03-30T18:46:03+08:00">2020-03-30</time>
              </span>

          

        </div>
      </header>

    
    
    
    <div class="post-body" itemprop="articleBody">

      
          <p>title：隐写术在CTF比赛中的应用之文本隐写</p>
<p>date：2020-2-21 23:00</p>
<h1 id="文本隐写"><a href="#文本隐写" class="headerlink" title="文本隐写"></a>文本隐写</h1><h2 id="文本隐写术概述"><a href="#文本隐写术概述" class="headerlink" title="文本隐写术概述"></a>文本隐写术概述</h2><p><strong>文本隐写</strong>：基于<strong>文本载体</strong>的隐写术</p>
<p>隐写思路：改变文本模式或特征来嵌入信息，虽然会使文本产生一定的变化，但这种变化肉眼难以察觉</p>
<p>文本隐写的关键，也是文本隐写最难的地方在于<strong>文本文件几乎不存在</strong>数据冗余</p>
<p>图像、音频、视频文件中天生存在噪声，噪声中包含冗余数据，因此虽然文件结构复杂，但能够嵌入信息的部分就越多，嵌入信息越容易；文本文件虽然结构简单，但也因此整个文件都以编码的形式呈现出来，很难有多余的部分写入数据，嵌入信息要更加困难。</p>
<h2 id="文本隐写种类总结"><a href="#文本隐写种类总结" class="headerlink" title="文本隐写种类总结"></a>文本隐写种类总结</h2><p>文本隐写的方法主要可以分为以下四种：</p>
<h3 id="文档格式微调法："><a href="#文档格式微调法：" class="headerlink" title="文档格式微调法："></a>文档格式微调法：</h3><p>（行移、字移、修改字符颜色等）</p>
<ul>
<li><p>行移 ：指调整文本文件中的垂直行距来隐藏信息的方法<br>   比如，隐藏个二进制串，实现隐藏信息的嵌入。可在格式化的文本文档中对行移的间距进行设置。</p>
<pre><code>例子如下：</code></pre><p>   <img src="/2020/02/21/%E9%9A%90%E5%86%99%E6%9C%AF%E5%9C%A8CTF%E6%AF%94%E8%B5%9B%E4%B8%AD%E7%9A%84%E5%BA%94%E7%94%A8%E4%B9%8B%E6%96%87%E6%9C%AC%E9%9A%90%E5%86%99/image-20200330171229032.png" alt="image-20200330171229032"></p>
<p>   （间距微小，让人看不出来）</p>
<p>   打开一个文本文档查看行移设置方法：</p>
<p>   选中某行&gt;右击&gt;字体&gt;字符间距&gt;位置</p>
<p>   <img src="/2020/02/21/%E9%9A%90%E5%86%99%E6%9C%AF%E5%9C%A8CTF%E6%AF%94%E8%B5%9B%E4%B8%AD%E7%9A%84%E5%BA%94%E7%94%A8%E4%B9%8B%E6%96%87%E6%9C%AC%E9%9A%90%E5%86%99/image-20200330172139120.png" alt="image-20200330172139120"></p>
<p>   注意有个提升、8磅</p>
<p>   有换了一行选中如下</p>
<p>   <img src="/2020/02/21/%E9%9A%90%E5%86%99%E6%9C%AF%E5%9C%A8CTF%E6%AF%94%E8%B5%9B%E4%B8%AD%E7%9A%84%E5%BA%94%E7%94%A8%E4%B9%8B%E6%96%87%E6%9C%AC%E9%9A%90%E5%86%99/image-20200330172309550.png" alt="image-20200330172309550"></p>
<p>   注意为降低、8磅</p>
<p>   则按之前规定可在这两行读出了二进制1和0这两个数字</p>
</li>
<li><p>字移（也是文档格式微调法中常用方法）：字移是通过将某一行的字符进行水平移动来隐藏信息。<br>注：移动对象两端的对象不能移动<br>例子如：</p>
<p>  <img src="/2020/02/21/%E9%9A%90%E5%86%99%E6%9C%AF%E5%9C%A8CTF%E6%AF%94%E8%B5%9B%E4%B8%AD%E7%9A%84%E5%BA%94%E7%94%A8%E4%B9%8B%E6%96%87%E6%9C%AC%E9%9A%90%E5%86%99/image-20200330173214614.png" alt="image-20200330173214614">))</p>
</li>
<li><p>修改字符颜色：是指对文本中字符颜色的十六进制颜色码微调来嵌入信息，利用了人眼对RGB颜色的微小变化不易察觉的特点。</p>
<p>   计算机中每种颜色都对应着一个十六进制的颜色码。</p>
<p>   例：</p>
<p>   <img src="/2020/02/21/%E9%9A%90%E5%86%99%E6%9C%AF%E5%9C%A8CTF%E6%AF%94%E8%B5%9B%E4%B8%AD%E7%9A%84%E5%BA%94%E7%94%A8%E4%B9%8B%E6%96%87%E6%9C%AC%E9%9A%90%E5%86%99/image-20200330174134323.png" alt="image-20200330174134323"></p>
<h3 id="空格回车标点法："><a href="#空格回车标点法：" class="headerlink" title="空格回车标点法："></a>空格回车标点法：</h3><p>（添加空格和回车，添加标点符号）</p>
</li>
<li><p>添加空格和回车：基于空格和回车的隐写术是利用人类视觉系统对微小间隔不敏感的特点而设计的</p>
<p>与字移、行移等不同的地方在于，字移、行移等操作适用于利用格式化文档（如word)传递信息的过程，而对于纯文本文档（如txt)不能进行微调操作，这时可以考虑利用空格或是回车来隐藏信息。</p>
<p>与字移相比，字移引起的间隔往往是人类肉眼所捕捉不到的，但空格带来的间隔如果插入位置不当会引起怀疑（如汉语文字中汉字与汉字之间通常是没有间隔的，过多的间隔会引起注意，因此该方法通常适用于英文文本），因此插入位置的选择往往是该类隐写术的关键。</p>
</li>
<li><p>添加标点</p>
<p>两种思路：1）对标点符号的替换可以隐藏信息，如逗号代表“1”，句号代表“0”   2）对标点符号的改变也可以隐藏信息，如中文逗号（宋体）“，”和英文逗号“,”</p>
</li>
</ul>
<h3 id="字符特征法："><a href="#字符特征法：" class="headerlink" title="字符特征法："></a>字符特征法：</h3><p>（字体替换、汉字结构）</p>
<ul>
<li><p>字体替换</p>
<p>替换时可以以一个汉字、一个字母、一个单词或一个句子等为替换的基本单位，如下：</p>
<p><img src="/2020/02/21/%E9%9A%90%E5%86%99%E6%9C%AF%E5%9C%A8CTF%E6%AF%94%E8%B5%9B%E4%B8%AD%E7%9A%84%E5%BA%94%E7%94%A8%E4%B9%8B%E6%96%87%E6%9C%AC%E9%9A%90%E5%86%99/image-20200330175625185.png" alt="image-20200330175625185"></p>
</li>
<li><p>汉字结构</p>
<p>（对字符结构性要求较高）</p>
<p>如：<img src="/2020/02/21/%E9%9A%90%E5%86%99%E6%9C%AF%E5%9C%A8CTF%E6%AF%94%E8%B5%9B%E4%B8%AD%E7%9A%84%E5%BA%94%E7%94%A8%E4%B9%8B%E6%96%87%E6%9C%AC%E9%9A%90%E5%86%99/image-20200330175940202.png" alt="image-20200330175940202"></p>
<p>在word中调整间距实现拼接例子：</p>
<p>先输入”亻“和”二“&gt;选中&gt;右击&gt;字体&gt;字符间距&gt;间距&gt;紧缩&gt;调整磅值（找个合适的）</p>
<p>注意后面再输入别的汉字要进行调整，不然会默认也设置为紧缩型了  选中&gt;右击&gt;字体&gt;字符间距&gt;间距&gt;标准化</p>
</li>
</ul>
<h3 id="自然语言法："><a href="#自然语言法：" class="headerlink" title="自然语言法："></a>自然语言法：</h3><p>（同义词转换、句法变换）</p>
<ul>
<li><p>同义词替换：现实生活中我们想要需要一个词语来形容一件事物时，通常有多个词语可以表达出同样的含义，同义词替换的隐写方式就是针对这一特性来嵌入信息的。</p>
<p>绝对同义词和相对同义词：</p>
<p><img src="/2020/02/21/%E9%9A%90%E5%86%99%E6%9C%AF%E5%9C%A8CTF%E6%AF%94%E8%B5%9B%E4%B8%AD%E7%9A%84%E5%BA%94%E7%94%A8%E4%B9%8B%E6%96%87%E6%9C%AC%E9%9A%90%E5%86%99/image-20200330181128849.png" alt="image-20200330181128849"></p>
</li>
<li><p>句法变换：句法变换是利用句子改变语序、措辞、语气等不显著改变原意的方法来嵌入信息的，变换中以每个句子为一个单位，每个句子携带隐藏信息的容量与其等价句型数量有关。</p>
<p><img src="/2020/02/21/%E9%9A%90%E5%86%99%E6%9C%AF%E5%9C%A8CTF%E6%AF%94%E8%B5%9B%E4%B8%AD%E7%9A%84%E5%BA%94%E7%94%A8%E4%B9%8B%E6%96%87%E6%9C%AC%E9%9A%90%E5%86%99/image-20200330181439430.png" alt="image-20200330181439430"></p>
<p>其他变化包括宾语前置、谓语前置、定语后置等。</p>
</li>
</ul>
<h2 id="文本隐写比较"><a href="#文本隐写比较" class="headerlink" title="文本隐写比较"></a>文本隐写比较</h2><p><img src="/2020/02/21/%E9%9A%90%E5%86%99%E6%9C%AF%E5%9C%A8CTF%E6%AF%94%E8%B5%9B%E4%B8%AD%E7%9A%84%E5%BA%94%E7%94%A8%E4%B9%8B%E6%96%87%E6%9C%AC%E9%9A%90%E5%86%99/image-20200330181652717.png" alt="image-20200330181652717"></p>

      
    </div>

    
    
    
      <footer class="post-footer">
        <div class="post-eof"></div>
      </footer>
  </article>
  
  
  

        
  
  
  <article itemscope itemtype="http://schema.org/Article" class="post-block home" lang="zh-CN">
    <link itemprop="mainEntityOfPage" href="http://yoursite.com/2020/02/19/%E5%B8%B8%E8%A7%81%E6%96%87%E4%BB%B6%E6%A0%BC%E5%BC%8F%E5%88%86%E6%9E%90/">

    <span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
      <meta itemprop="image" content="/images/avatar.gif">
      <meta itemprop="name" content="YQ Cong">
      <meta itemprop="description" content="">
    </span>

    <span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
      <meta itemprop="name" content="tender healer">
    </span>
      <header class="post-header">
        <h1 class="post-title" itemprop="name headline">
          
            <a href="/2020/02/19/%E5%B8%B8%E8%A7%81%E6%96%87%E4%BB%B6%E6%A0%BC%E5%BC%8F%E5%88%86%E6%9E%90/" class="post-title-link" itemprop="url">常见文件格式分析</a>
        </h1>

        <div class="post-meta">
            <span class="post-meta-item">
              <span class="post-meta-item-icon">
                <i class="fa fa-calendar-o"></i>
              </span>
              <span class="post-meta-item-text">发表于</span>

              <time title="创建时间：2020-02-19 19:50:41" itemprop="dateCreated datePublished" datetime="2020-02-19T19:50:41+08:00">2020-02-19</time>
            </span>
              <span class="post-meta-item">
                <span class="post-meta-item-icon">
                  <i class="fa fa-calendar-check-o"></i>
                </span>
                <span class="post-meta-item-text">更新于</span>
                <time title="修改时间：2020-04-02 23:09:24" itemprop="dateModified" datetime="2020-04-02T23:09:24+08:00">2020-04-02</time>
              </span>

          

        </div>
      </header>

    
    
    
    <div class="post-body" itemprop="articleBody">

      
          <p>title：常见文件格式分析</p>
<p>date：2020-2-19 17：00</p>
<h1 id="常见文件格式分析"><a href="#常见文件格式分析" class="headerlink" title="常见文件格式分析"></a>常见文件格式分析</h1><h2 id="文件格式概述"><a href="#文件格式概述" class="headerlink" title="文件格式概述"></a>文件格式概述</h2><p><strong>文件格式</strong>实质上是信息的一种特殊的编码方式，计算机在储存信息时，由于信息种类的不同，所采取的文件格式往往也不同，在windows系统中，计算机通常采用扩展名的方式来区分不同的文件格式，<strong>CTF中考察的文件格式</strong>可以大致分四类：<br>文本格式：.txt、.doc、.docx<br>图像格式：.png、.jpg、.bmp、.gif<br>音频格式：.mp3、.wma、.wav<br>视频格式：.mp4、.rmvb、.avi<br><u>同一文件使用不同的程序打开，得到的结果可能完全不同，比如图像文件用txt打开是乱码，而用图片查看器打开则会呈现图像内容（图片正常)</u></p>
<h2 id="txt格式"><a href="#txt格式" class="headerlink" title="txt格式"></a>txt格式</h2><p>（text的缩写）<br>通常是指windows操作系统自带的一种<strong>纯文本文件</strong>格式，这里的纯文本是指txt文件通常只有文本，没有样式，它不像其他格式的文件包含自己特有的文件标识和结构，它的格式<strong>完全取决于向其中写入的内容</strong>，可以通过winhex等工具来进行观察，在windows下通过记事本程序（notepad.exe)创建的文件即为txt格式。<br>相对应的：富文本文件</p>
<h2 id="doc-docx格式"><a href="#doc-docx格式" class="headerlink" title="doc/docx格式"></a>doc/docx格式</h2><p>（<strong>doc</strong>即document的缩写)<br><strong>docx</strong>即在doc的基础上加入了xml，通常是指Microsoft Office Word软件创建的文件格式，docx实际上是作为一个zip压缩方式的压缩文件而存在，可以对其解压来查看其具体包含的内容。<br>与doc相比，docx文件体积更小，支持的对象更多，而且安全性得到了进一步的提升，通常采用AOPR等工具爆破docx的困难度要比doc文件更高。</p>
<h2 id="png格式"><a href="#png格式" class="headerlink" title="png格式"></a>png格式</h2><p>（Portable Network Graphics(便携式网络图形)的缩写）<br>属于<strong>无损压缩</strong>（即数据并未收到影响）的<strong>位图</strong>格式。它采用LZ77的派生算法进行压缩，压缩比高，文件体积小，同时不损失颜色和数据，因此保证了图像的质量。一个PNG文件可以由一个<strong>文件头标志</strong>和若干个<strong>数据块</strong>构成，而数据块又可以分为关键数据块和辅助数据块两种，每一类数据块又包含若干具体的数据块部分，这些部分共同构成了PNG文件的数据块。<br>其他：有损压缩（有损压缩合并了一部分图像中像颜色亮度之类的信息，但人眼的分辨能力有限，可能看不出太大差异）的图像会失真（压缩时图片本身给改变了）</p>
<p><img src="/2020/02/19/%E5%B8%B8%E8%A7%81%E6%96%87%E4%BB%B6%E6%A0%BC%E5%BC%8F%E5%88%86%E6%9E%90/1582105782384.png" alt="1582105782384"></p>
<p>png中被称为标准数据块的四个部分：</p>
<ul>
<li><p>1）：文件头数据块（标志：IHDR），包含图像中的基本信息。</p>
<p>其数据部分有13个字节，从数据部分开始看：</p>
<p><img src="/2020/02/19/%E5%B8%B8%E8%A7%81%E6%96%87%E4%BB%B6%E6%A0%BC%E5%BC%8F%E5%88%86%E6%9E%90/1582108872344.png" alt="1582108872344"></p>
<p>表示png图像的宽度（单位：像素）</p>
<p><img src="/2020/02/19/%E5%B8%B8%E8%A7%81%E6%96%87%E4%BB%B6%E6%A0%BC%E5%BC%8F%E5%88%86%E6%9E%90/1582108917185.png" alt="1582108917185"></p>
<p>表示png图像的高度（单位：像素），通过修改这四个字节的值可把想隐藏的东西隐藏进去。</p>
<p><img src="/2020/02/19/%E5%B8%B8%E8%A7%81%E6%96%87%E4%BB%B6%E6%A0%BC%E5%BC%8F%E5%88%86%E6%9E%90/1582109146438.png" alt="1582109146438"></p>
<p>表示图像深度（色深），这里表示png最多支持16种颜色（2的4次方）。</p>
<p><img src="/2020/02/19/%E5%B8%B8%E8%A7%81%E6%96%87%E4%BB%B6%E6%A0%BC%E5%BC%8F%E5%88%86%E6%9E%90/1582109398799.png" alt="1582109398799"></p>
<p>再往下数1个字节表示颜色类型，03表示这是一幅索引彩色图像，</p>
<p><img src="/2020/02/19/%E5%B8%B8%E8%A7%81%E6%96%87%E4%BB%B6%E6%A0%BC%E5%BC%8F%E5%88%86%E6%9E%90/1582109369230.png" alt="1582109369230"></p>
<p>分别表示压缩方法、滤波器方法、隔行扫描方法</p>
<p>（最后的字节为0时代表非隔行扫描，1代表隔行）</p>
<p><img src="/2020/02/19/%E5%B8%B8%E8%A7%81%E6%96%87%E4%BB%B6%E6%A0%BC%E5%BC%8F%E5%88%86%E6%9E%90/1582110029944.png" alt="1582110029944"></p>
<p>校验码</p>
</li>
<li><p>2）：调色板数据块（PLTE）（在索引彩色图中该数据块必须存在，在灰度图中该数据块必不存在）</p>
</li>
<li><p>3）：图像数据块（IDAT）（可以存在多个）,存放图像实际数据</p>
</li>
</ul>
<p>数据块的组成结构：数据长度（占4个字节） 块的类型（占4个字节） 数据内容（占若干个字节） 校验码（占4个字节）</p>
<ul>
<li>4）图像结束数据块（IEND），表示png数据流的结束，一般不包含数据</li>
</ul>
<p><strong>确定数据块</strong>：</p>
<ul>
<li><p>1）选中数据块，以可选数据块gAMA为例：<img src="/2020/02/19/%E5%B8%B8%E8%A7%81%E6%96%87%E4%BB%B6%E6%A0%BC%E5%BC%8F%E5%88%86%E6%9E%90/1582106681574.png" alt="1582106681574"></p>
</li>
<li><p>2）往前数四个字节</p>
<p><img src="/2020/02/19/%E5%B8%B8%E8%A7%81%E6%96%87%E4%BB%B6%E6%A0%BC%E5%BC%8F%E5%88%86%E6%9E%90/1582107117583.png" alt="1582107117583"></p>
</li>
</ul>
<p>​       读出来长度为4（即数据部分长度为4个字节）</p>
<ul>
<li><p>3）往后数4个字节的数据长度</p>
<p><img src="/2020/02/19/%E5%B8%B8%E8%A7%81%E6%96%87%E4%BB%B6%E6%A0%BC%E5%BC%8F%E5%88%86%E6%9E%90/1582107374374.png" alt="1582107374374"></p>
</li>
<li><p>4）再加上4个字节的校验码</p>
<p><img src="/2020/02/19/%E5%B8%B8%E8%A7%81%E6%96%87%E4%BB%B6%E6%A0%BC%E5%BC%8F%E5%88%86%E6%9E%90/1582107441885.png" alt="1582107441885"></p>
</li>
</ul>
<p>则数据块就确定好了：</p>
<p>​    <img src="/2020/02/19/%E5%B8%B8%E8%A7%81%E6%96%87%E4%BB%B6%E6%A0%BC%E5%BC%8F%E5%88%86%E6%9E%90/1582107590873.png" alt="1582107590873"></p>
<h2 id="jpeg格式"><a href="#jpeg格式" class="headerlink" title="jpeg格式"></a>jpeg格式</h2><p>（Joint Photographic Experts Group(联合图像专家小组)的英文缩写）</p>
<ul>
<li><p>属于<strong>有损压缩</strong>的与平台无关的图像格式，jpeg文件压缩比高（可高达100：1）、体积小，但图像质量也会因此降低，因此不适用于存储<strong>颜色较少</strong>或<strong>对比强烈</strong>的简洁风格的图片，但也因为其体积小，经常在网络中作为传输照片的常用格式，常见的后缀还有<strong>jpg</strong></p>
</li>
<li><p>一般看成由段和经过压缩编码的图像数据两部分组成。</p>
</li>
<li><p>jpg的段可以类比成png的块来理解。</p>
</li>
<li><p>段的组成（4部分）：段标志（表示一个段的开始，占1个字节）  段类型（表示这是干什么用的段）  段长度（非必须）    段内容（非必须）</p>
</li>
</ul>
<p>​           <img src="/2020/02/19/%E5%B8%B8%E8%A7%81%E6%96%87%E4%BB%B6%E6%A0%BC%E5%BC%8F%E5%88%86%E6%9E%90/1582112494547.png" alt="1582112494547"></p>
<p>​    看到FF就知道是一个段开始的标志</p>
<h2 id="bmp格式"><a href="#bmp格式" class="headerlink" title="bmp格式"></a>bmp格式</h2><p>（bitmap的缩写）</p>
<p>是windows操作系统中的标准图像文件格式，通常情况下采用位映射存储格式（这种存储方式是<strong>无损</strong>的）除了图像深度（图像深度：图片控制色彩表现的能力，深度越高，位数越多，控制色彩能力越强，表现得色彩越逼真）可选之外，<strong>不采用任何其它的压缩方式</strong>，因此bmp图像的<strong>图像质量非常高</strong>，但也<strong>体积</strong>也往往<strong>非常大</strong>。（数据为原始数据，涉及到很细致的对比数据的情况下，一般选择bmp格式来存储）</p>
<p>bmp图像通常可以分为设备相关位图和设备无关位图两大类</p>
<p>一个bmp文件结构通常由文件头（14个字节）、信息头、颜色信息（调色板）和位图数据四部分组成</p>
<ul>
<li><p><strong>文件头</strong>（14个字节）：</p>
<ul>
<li><p>前两个字节是位图类别</p>
</li>
<li><p>再往后数四个字节位图大小（单位：字节）</p>
</li>
<li><p>再往后的四个字节是两个保留位，每个保留位各占两个字节，这两个保留位必须设置成零</p>
</li>
<li><p>最后四个字节表示从文件头到实际图像数据之间的偏移量（可让我们迅速从文件中读取位图数据）</p>
<p><img src="/2020/02/19/%E5%B8%B8%E8%A7%81%E6%96%87%E4%BB%B6%E6%A0%BC%E5%BC%8F%E5%88%86%E6%9E%90/1582204042248.png" alt="1582204042248"></p>
<p>则偏移地址：0x36    （换算为十进制则为54）</p>
</li>
<li><p>跳转到偏移处，从这开始就是位图数据部分</p>
<p><img src="/2020/02/19/%E5%B8%B8%E8%A7%81%E6%96%87%E4%BB%B6%E6%A0%BC%E5%BC%8F%E5%88%86%E6%9E%90/1582204209314.png" alt="1582204209314"></p>
</li>
</ul>
<p>（从文件开头到位图数据偏移一共偏移了54个字节）</p>
<p>偏移量后面就紧跟着数据部分了</p>
</li>
<li><p><strong>信息头</strong>（通常由40个字节组成）</p>
<ul>
<li><p>可以注意到，信息头和文件头加起来已经有54个字节（偏移量）了，则这个位图无调色板部分了。</p>
</li>
<li><p>信息头从这里开始</p>
<p><img src="/2020/02/19/%E5%B8%B8%E8%A7%81%E6%96%87%E4%BB%B6%E6%A0%BC%E5%BC%8F%E5%88%86%E6%9E%90/1582204744380.png" alt="1582204744380"></p>
</li>
</ul>
</li>
</ul>
<p>​         前四个字节表示信息头大小</p>
<ul>
<li><p>0X28  ：表示该信息头有40个字节</p>
</li>
<li><p>再往后数四个字节表示图像宽度（单位：像素）</p>
</li>
<li><p>再往后数四个字节表示图像高度（单位：像素），bmp中还可用它判断是倒向的位图还是正向的位图，若为倒向的位图，这里的高度为正值，若为正向的位图，这里的高度为负值。</p>
</li>
<li><p>再往后数两个字节，说明目标设备颜色平面数，一般都是十六进制的01 00</p>
</li>
<li><p>再往后数两个字节，说明一个像素点占几位，单位：比特位/像素，可取几个固定的数值：1、4、8、16、24、32</p>
</li>
<li><p>再往后数四个字节，说明图像数据的压缩类型，也是有几个固定的取值，0最常用-&gt;表示不压缩。</p>
</li>
<li><p>再往后数四个字节，表示图像大小，单位：字节</p>
</li>
<li><p>再往后数四个字节，表示水平分辨率，像素/米，有符号整数</p>
</li>
<li><p>再往后四个字节，表示垂直分辨率，像素/米，有符号整数</p>
</li>
<li><p>再往后四个字节，位图实际使用的调色板的索引数，为0时表示使用所有的调色板指引</p>
</li>
<li><p>再往后四个字节，说明对图像显示起到重要影响的颜色索引数目，为0时表示所有颜色索引都对图像显示有重要影响。</p>
<h2 id="gif格式"><a href="#gif格式" class="headerlink" title="gif格式"></a>gif格式</h2></li>
</ul>
<p>（Graphics Interchange Format（图像交换格式）的缩写）</p>
<p>（gif文件在CTF中有时经常会考它的动态效果）</p>
<p>它存储的数据并不是颜色本身，而是该点的颜色对应于颜色列表的<strong>索引值</strong>。其内部分成许多存储块，可以用来存储<strong>多幅图像</strong>或者是决定图像表现行为的控制块，继而实现<strong>动画</strong>和交互式应用。无损压缩<br>一个gif图像通常由文件头、gif数据流和文件终结器三部分组成，目前常见的有<strong>87</strong>和<strong>89</strong>两个版本。</p>
<p>分为静态、动态两种</p>
<ul>
<li>文件头：包含gif署名、版本号（即89a还是87a）</li>
</ul>
<p>​     gif署名即gif这三个字母对应的，如下图这三个字节：<img src="/2020/02/19/%E5%B8%B8%E8%A7%81%E6%96%87%E4%BB%B6%E6%A0%BC%E5%BC%8F%E5%88%86%E6%9E%90/1582296572591.png" alt="1582296572591"></p>
<ul>
<li><p>gif数据流：由一个个的数据块组成，其中的逻辑屏幕描述符由7个字节组成。</p>
<p>前两个字节表示图像的宽度，如下图：</p>
<p><img src="/2020/02/19/%E5%B8%B8%E8%A7%81%E6%96%87%E4%BB%B6%E6%A0%BC%E5%BC%8F%E5%88%86%E6%9E%90/1582296790692.png" alt="1582296790692"></p>
</li>
</ul>
<p>​         再往后的两个字节表示图像的高度</p>
<p>​         再往后的一个字节为压缩字节（即本图中的十六进         制的F7），代表的意义需要给它拆成二进制来看，本图拆成二进制即为：1111 0111</p>
<p>​          最高位的1（即最左边的）是标志位，表示全局的颜色列表是否存在。</p>
<p>​          第二、三、四位的1表示图像的调色板中每个颜色的原色所占的比特数（或者说是颜色深度），但要加1才是最终值，比如这里是111，那么它的颜色深度就是8位（1x2的0次幂+1x2的1次幂+1x2的2次幂+1）</p>
<p>​           第五位也是标志位，表示颜色列表的排序方式（按照颜色在图像中出现的频率进行排序，0表示升序，1表示降序）</p>
<p>​           最后的3位，表示全局颜色列表（全局颜色列表是gif数据流的一个块）的大小，大小等于2的n+1次方，比如这里为2的7+1次方，即2的八次方（7为二进制的111换算得来的）</p>
<ul>
<li><p>终结器：在最后，只有一个字节，表示gif文件的结束。</p>
<p><img src="/2020/02/19/%E5%B8%B8%E8%A7%81%E6%96%87%E4%BB%B6%E6%A0%BC%E5%BC%8F%E5%88%86%E6%9E%90/1582298319941.png" alt="1582298319941"></p>
</li>
</ul>
<h2 id="mp3格式"><a href="#mp3格式" class="headerlink" title="mp3格式"></a>mp3格式</h2><p>（MPEG-1 Audio Layer-<strong>3</strong>(活动图像专家组第三音频层)的简称）</p>
<p>它根据压缩质量和编码复杂程度可以大致分为三层，分别对应与mp1、2、3这三种<strong>有损压缩</strong>声音文件，根据用途的不同，每层采取的编码方式也不同，其编码层次越高，编码器就越复杂，压缩率也就越高。</p>
<p>一个mp3文件大致可以分为TAG_V2、Frame和TAG_V1三部分，其中frame是构成mp3的最小组成单位。</p>
<ul>
<li><p>TAG_V2部分一共分有4个版本，从V2.1到V2.4（但这一部分并不一定要存在，它主要是当TAG_V1部分存储不下信息时起一个扩充作用）</p>
<p><img src="/2020/02/19/%E5%B8%B8%E8%A7%81%E6%96%87%E4%BB%B6%E6%A0%BC%E5%BC%8F%E5%88%86%E6%9E%90/1582299432392.png" alt="1582299432392"></p>
<p>这个字节04表示版本号，4代表V2.4版本</p>
</li>
<li><p>中间部分是数据部分，该部分由一系列的帧组成，每个帧的长度可能是不固定的</p>
</li>
<li><p>TAG_V1是记录文件的作者、作曲专辑等等。</p>
</li>
</ul>
<h2 id="avi格式"><a href="#avi格式" class="headerlink" title="avi格式"></a>avi格式</h2><p>（Audio Video Interleaved的缩写）</p>
<ul>
<li>是微软公司开发的一种数字多媒体容器格式，同时也是一种RIFF文件格式，它将音频和视频数据包含在了<strong>同一个文件容器</strong>当中，支持对音频和视频进行同步回放，实现了同步控制和实时播放，使得用户可以高效的播放存储在硬盘和光盘上的avi文件，一个avi文件通常既可以包含单一的音视频流，也可以包含多个不同类别的媒体流。</li>
</ul>
<p><img src="/2020/02/19/%E5%B8%B8%E8%A7%81%E6%96%87%E4%BB%B6%E6%A0%BC%E5%BC%8F%E5%88%86%E6%9E%90/1582344489197.png" alt="1582344489197"></p>
<ul>
<li><p>RIFF后紧跟着的四个字节表示此avi文件的大小</p>
</li>
<li><p>再往后的四个字节说明了文件的具体类型（因为遵循RIFF规范的不止avi，还有其他文件）</p>
</li>
</ul>
<p><img src="/2020/02/19/%E5%B8%B8%E8%A7%81%E6%96%87%E4%BB%B6%E6%A0%BC%E5%BC%8F%E5%88%86%E6%9E%90/1582344732053.png" alt="1582344732053"></p>
<ul>
<li><p>在往后的内容就是文件的实际数据了</p>
</li>
<li><p>整个文件的基本单元实际上是数据块，每个数据块又包含了三个部分，第一部分是四个字节的数据块ID，第二部分表示数据块的大小，第三部分表示整个数据</p>
</li>
<li><p>整个RIFF文件又可以看成是个大数据块，数据块ID就是RIFF这个标志，一个RIFF文件只能有一个RIFF块，其他所有的块都可以看为是这个块的子块，子块又分为两类：list块（还可再包含其他子块）和普通子块（不能再包含其他子块了）</p>
<p>一个RIFF块包含三个子块时，一般来说包含：信息块、数据块、索引块</p>
</li>
</ul>

      
    </div>

    
    
    
      <footer class="post-footer">
        <div class="post-eof"></div>
      </footer>
  </article>
  
  
  

        
  
  
  <article itemscope itemtype="http://schema.org/Article" class="post-block home" lang="zh-CN">
    <link itemprop="mainEntityOfPage" href="http://yoursite.com/2020/02/18/%E9%9A%90%E5%86%99%E6%9C%AF/">

    <span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
      <meta itemprop="image" content="/images/avatar.gif">
      <meta itemprop="name" content="YQ Cong">
      <meta itemprop="description" content="">
    </span>

    <span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
      <meta itemprop="name" content="tender healer">
    </span>
      <header class="post-header">
        <h1 class="post-title" itemprop="name headline">
          
            <a href="/2020/02/18/%E9%9A%90%E5%86%99%E6%9C%AF/" class="post-title-link" itemprop="url">隐写术</a>
        </h1>

        <div class="post-meta">
            <span class="post-meta-item">
              <span class="post-meta-item-icon">
                <i class="fa fa-calendar-o"></i>
              </span>
              <span class="post-meta-item-text">发表于</span>

              <time title="创建时间：2020-02-18 23:05:27" itemprop="dateCreated datePublished" datetime="2020-02-18T23:05:27+08:00">2020-02-18</time>
            </span>
              <span class="post-meta-item">
                <span class="post-meta-item-icon">
                  <i class="fa fa-calendar-check-o"></i>
                </span>
                <span class="post-meta-item-text">更新于</span>
                <time title="修改时间：2020-02-19 16:57:16" itemprop="dateModified" datetime="2020-02-19T16:57:16+08:00">2020-02-19</time>
              </span>

          

        </div>
      </header>

    
    
    
    <div class="post-body" itemprop="articleBody">

      
          <h1 id="隐写术"><a href="#隐写术" class="headerlink" title="隐写术"></a>隐写术</h1><p>（隐藏书写的信息的技术，隐写术属于<strong>信息隐藏技术</strong>当中的一种，旨在保护秘密信息的安全传输。）</p>
<h2 id="信息隐藏技术："><a href="#信息隐藏技术：" class="headerlink" title="信息隐藏技术："></a>信息隐藏技术：</h2><p>隐写术 ——主要应用于通信<br>数字水印——主要应用于产权保护<br>隐蔽信道<br>阀下信道<br>匿名通信<br>……</p>
<h2 id="隐写术应用场景"><a href="#隐写术应用场景" class="headerlink" title="隐写术应用场景"></a>隐写术应用场景</h2><p>Simmons模型—囚犯问题</p>
<h2 id="密码学与隐写术"><a href="#密码学与隐写术" class="headerlink" title="密码学与隐写术"></a>密码学与隐写术</h2><p>密码学：试图通过对信息加密的方式，使信息变得无意义，继而使他人无法获得真正的信息。<br>隐写术：试图隐藏通信事件本身。<br>目的相同：都是为了针对第三方。<br>隐蔽性：（总体上）隐写&gt;加密<br>加密后的文本通常为无意义文本，较易察觉（当然也存在诸如培根密码等密文为有意义文本的加密方式）<br>安全性：（总体上）加密&gt;隐写<br>隐写方式或算法一旦被识别，通常也就取得信息了，但是加密通常即使知道算法也无法解出明文（不考虑碰撞）</p>
<p><img src="/2020/02/18/%E9%9A%90%E5%86%99%E6%9C%AF/1582033158920.png" alt="png"></p>
<h2 id="评价隐写术的标准"><a href="#评价隐写术的标准" class="headerlink" title="评价隐写术的标准"></a>评价隐写术的标准</h2><ul>
<li>核心标准：<strong>隐蔽程度</strong>（隐蔽程度越高，直接导致检测有效信息越困难）</li>
<li>其他标准：<ul>
<li>隐写算法的好坏</li>
<li>隐写手段的复杂度</li>
<li>提取信息的难易度<h2 id="隐写术分类"><a href="#隐写术分类" class="headerlink" title="隐写术分类"></a>隐写术分类</h2></li>
</ul>
</li>
</ul>
<p><img src="/2020/02/18/%E9%9A%90%E5%86%99%E6%9C%AF/1582033534324.png" alt="png"></p>
<p>现代数字隐写四大载体：</p>
<ul>
<li>文本：字体、空格、标点、行间距</li>
<li>图像：各类图片格式特征（png、jpg、bmp）</li>
<li>音频：mp3 stego、波形图、频谱图</li>
<li>视频：压缩视频、未压缩视频<h2 id="CTF竞赛中的隐写术概述"><a href="#CTF竞赛中的隐写术概述" class="headerlink" title="CTF竞赛中的隐写术概述"></a>CTF竞赛中的隐写术概述</h2>（主要以视频题、音频题为主）<ul>
<li>隐写套路较为固定</li>
</ul>
</li>
</ul>
<ul>
<li><p>比赛工具较为成熟</p>
<p><img src="/2020/02/18/%E9%9A%90%E5%86%99%E6%9C%AF/1582034022602.png" alt="png"></p>
</li>
<li><p>好处：通常题目难度较低，即使没有解题思路，依次尝试各个解法往往也能在没发现提示的情况下找出问题所在</p>
</li>
<li><p>坏处：容易形成思维定势，一旦题目考察方式不常规，往往容易无从下手，不知道从哪开始去分析，失去独立发现问题和思考的能力。</p>
</li>
<li><p>通常作为MISC类题目的一个考察方向（这里MISC泛指Misc&amp;Steganography&amp;forensic&amp;Crypto)<br>因为不作为单独分类，因此隐写术通常只是一道Misc题中的一部分，与其他考察方向共同构成一道完整的Misc题</p>
</li>
<li><p>在国外CTF比赛中以计算机取证（Forensics)类的题目出现。</p>
<h3 id="CTF比赛中的典型隐写分析工具"><a href="#CTF比赛中的典型隐写分析工具" class="headerlink" title="CTF比赛中的典型隐写分析工具"></a>CTF比赛中的典型隐写分析工具</h3><h4 id="Binwalk"><a href="#Binwalk" class="headerlink" title="Binwalk"></a>Binwalk</h4><p>固件分析工具，常用作路由器逆向、后门分析，或识别二进制图像中的嵌入式文件和可执行代码<br>命令：<strong>binwalk 文件名</strong><br>常用参数：<br>+<strong>-e</strong>：按照预定义的配置文件来提取（extract.conf),通常是提取rar</p>
<ul>
<li><strong>–d=xxx</strong>：提取某种类型的文件，xxx为文件类型（比如–dd=png）</li>
<li><strong>-M</strong>：递归提取，需要跟-e或-D配合（比如-Me）<h4 id="Winhex"><a href="#Winhex" class="headerlink" title="Winhex"></a>Winhex</h4>十六进制文件编辑器，常用于检查和修复文件、数据恢 复、数据取证等<h4 id="Stegsolve"><a href="#Stegsolve" class="headerlink" title="Stegsolve"></a>Stegsolve</h4>图片通道查看器<br>Analyse下拉菜单：<br>FileFormat：查看文件格式和参数信息，有时候flag会写在图片信息里<br>Data Extract：数据提取，如LSB隐写等在这个选项中提取信息<br>Stereogram solver：立体视图，可以左右移动控制偏移量<br>Frame Broswer：逐帧浏览，如查看快速闪过的GIF图中的flag<br>Image Combiner：图片结合，可以对两张图片做xor、add、sub等运算</li>
</ul>
</li>
</ul>
<h4 id="StegDetect"><a href="#StegDetect" class="headerlink" title="StegDetect"></a>StegDetect</h4><p>（CTF比赛中的典型隐写分析工具）</p>
<p>数字图像隐写分析工具，主要针对JPEG<br>-q：仅显示可能包含隐藏内容的图像<br>-t：设置要检测哪些隐写算法，支持如下选项：<br>-j：检测图像中的信息是否是用jsteg嵌入的<br>-o：检测图像中的信息是否是用outguess嵌入的<br>-p：检测图像中的信息是否是用gphide嵌入的<br>-i：检测图像中的信息是否是用invisible seecrets嵌入的<br>-s：设置敏感度</p>

      
    </div>

    
    
    
      <footer class="post-footer">
        <div class="post-eof"></div>
      </footer>
  </article>
  
  
  

        
  
  
  <article itemscope itemtype="http://schema.org/Article" class="post-block home" lang="zh-CN">
    <link itemprop="mainEntityOfPage" href="http://yoursite.com/2020/02/17/find%E6%8C%87%E4%BB%A4/">

    <span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
      <meta itemprop="image" content="/images/avatar.gif">
      <meta itemprop="name" content="YQ Cong">
      <meta itemprop="description" content="">
    </span>

    <span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
      <meta itemprop="name" content="tender healer">
    </span>
      <header class="post-header">
        <h1 class="post-title" itemprop="name headline">
          
            <a href="/2020/02/17/find%E6%8C%87%E4%BB%A4/" class="post-title-link" itemprop="url">find指令</a>
        </h1>

        <div class="post-meta">
            <span class="post-meta-item">
              <span class="post-meta-item-icon">
                <i class="fa fa-calendar-o"></i>
              </span>
              <span class="post-meta-item-text">发表于</span>
              

              <time title="创建时间：2020-02-17 10:35:00 / 修改时间：19:49:36" itemprop="dateCreated datePublished" datetime="2020-02-17T10:35:00+08:00">2020-02-17</time>
            </span>

          

        </div>
      </header>

    
    
    
    <div class="post-body" itemprop="articleBody">

      
          <h1 id="find指令"><a href="#find指令" class="headerlink" title="find指令"></a>find指令</h1><p>在目录结构中搜索文件，并执行指定的操作。</p>
<h2 id="1-命令格式"><a href="#1-命令格式" class="headerlink" title="1.命令格式"></a>1.命令格式</h2><p>find 路径 选项[-print -exec -ok..]</p>
<h2 id="2-命令功能"><a href="#2-命令功能" class="headerlink" title="2.命令功能"></a>2.命令功能</h2><p>用于文件树中查找文件，并做出相应的处理</p>
<h2 id="3-命令参数"><a href="#3-命令参数" class="headerlink" title="3.命令参数"></a>3.命令参数</h2><p>路径（pathname) : <strong>find命令查找的目录路径，用 . 表示当前目录，用 / 表示系统目录</strong></p>
<ul>
<li><p><strong>find . text.c</strong>  用此指令时会出现所有在当前目录下的文件</p>
</li>
<li><p>*<em>find . *</em> 会显示所有目录</p>
</li>
<li><p>*<em>find / 目录名 *</em> 会在系统目录下查找，<br>如：find / var 会显示在系统目录下所有关于var的文件</p>
</li>
<li><p><strong>-exec</strong> : find命令对匹配的文件执行该参数所给出的shell命令，相应的命令格式为*<em>‘命令’{} ;  *</em>   (注意{}和\之间的空格)<br>例：find code -exec ls {} ;</p>
<p><img src="/2020/02/17/find%E6%8C%87%E4%BB%A4/1581909605074.png" alt="img"></p>
</li>
<li><p><strong>-ok</strong>：和exec 作用相同，不过是一种更安全的模式来让执行该参数所给出的shell命令，每次执行前都会让用户来确定是否执行</p>
<h2 id="4-命令选项"><a href="#4-命令选项" class="headerlink" title="4.命令选项"></a>4.命令选项</h2></li>
<li><p><strong>-name</strong> ：按照文件名查找文件<br>例：find . -name code</p>
</li>
<li><p><strong>-perm</strong> : 按照文件权限来查找文件<br>例：find -perm -777 -print<br><strong>777</strong>是权限二进制的表示形式表示可读(r/4)可写(w/2)可执行(x/1)</p>
</li>
<li><p><strong>-prnue</strong>：表示不在当前指定的目录下查找<br>如果同时使用-depth选项，那么-prnue指令将被忽略<br>例：find -depth -prune</p>
<p><img src="/2020/02/17/find%E6%8C%87%E4%BB%A4/1581909659186.png" alt="img"></p>
</li>
<li><p><strong>-user 文件属主名</strong> ：按照文件属主来查找文件</p>
</li>
<li><p><strong>-group 文件所属组名</strong>：按照文件所属组来查找</p>
</li>
<li><p><strong>-mtime -n **或</strong>-mtime<strong>：按照文件更改时间来确认<br>**-n</strong>表示现在距更改文件几天以内，<strong>+n</strong>表示更改文件距离现在几天以前</p>
<p><img src="/2020/02/17/find%E6%8C%87%E4%BB%A4/1581910254991.png" alt="img"></p>
</li>
<li><p><strong>-nogroup</strong>：查无有效属组的文件，即文件的属组在 etc/groups中不存在</p>
</li>
<li><p><strong>-nouser</strong>：查无有效属主的文件，即文件的属主在/etc/passwd中不存在</p>
</li>
<li><p><strong>-newer file1 ! file2</strong> 查找更改时间比文件file1新但比文件file2旧的文件。</p>
</li>
<li><p><strong>-type</strong>查找某一类型的文件<br>类型：+ <strong>b</strong> 块设备<br> <strong>d</strong> 目录<br> <strong>c</strong> 字符设备文件<br> <strong>p</strong> 管道文件<br> <strong>l</strong> 符号链接文件<br> <strong>f</strong> 普通文件<br>如:查找块设备</p>
</li>
</ul>
<p><img src="/2020/02/17/find%E6%8C%87%E4%BB%A4/Center.png" alt="img"></p>
<ul>
<li><p><strong>-size n[c]</strong>表示查找文件长度为n快，带有c表示文件按字节计算</p>
<p><img src="/2020/02/17/find%E6%8C%87%E4%BB%A4/Center1.png" alt="img"><br>+<strong>-depth</strong>表示在当前目录找然后再在其子目录中找</p>
<p>例：find -depth</p>
</li>
<li><p><strong>-fstype</strong>：查找位于某⼀一类型⽂文件系统中的⽂文件，这些⽂文件系统类型通常可以在配置⽂文件/etc/fstab中找到</p>
</li>
<li><p><strong>-flowe</strong> 如果find命令遇到符号链接文件就跟踪至链接所指向的文件</p>
</li>
<li><p><strong>-cpio</strong> 将所匹配的文件备份到磁盘中</p>
<h2 id="5-按时间查找文件"><a href="#5-按时间查找文件" class="headerlink" title="5.按时间查找文件"></a>5.按时间查找文件</h2></li>
<li><p>如我们想查找三天以前的文件：<br>find /home/username/filename/ -mtime +3 -exec ls -l { } ;    <img src="/2020/02/17/find%E6%8C%87%E4%BB%A4/Center2.jpg" alt="img"></p>
</li>
<li><p>查找三天以内的文件<br>find/home/username/filename/ -mtime -3 -exec ls -l { } ;</p>
 <img src="/2020/02/17/find%E6%8C%87%E4%BB%A4/Center3.jpg" alt="img" style="zoom:150%;">

</li>
</ul>
<h2 id="6-查找文件大小为xx的文件："><a href="#6-查找文件大小为xx的文件：" class="headerlink" title="6.查找文件大小为xx的文件："></a>6.查找文件大小为xx的文件：</h2><ul>
<li><p>如find -size -1000c查找一个小于1000个字节的文件；截取一小部分为例</p>
<p><img src="/2020/02/17/find%E6%8C%87%E4%BB%A4/Center4.jpg" alt="img"></p>
</li>
<li><p>find / -amin -5查找系统最后5分钟系统访问的文件，我们取一小部分来展示</p>
<p><img src="/2020/02/17/find%E6%8C%87%E4%BB%A4/Center5.jpg" alt="img"></p>
</li>
<li><p>find , -atime -5查找当前目录下最后5天的访问的文件</p>
<p><img src="/2020/02/17/find%E6%8C%87%E4%BB%A4/Center6.jpg" alt="img"></p>
</li>
</ul>
<h2 id="7-查找当前所有目录并排序"><a href="#7-查找当前所有目录并排序" class="headerlink" title="7.查找当前所有目录并排序"></a>7.查找当前所有目录并排序</h2><ul>
<li><p>ll -t表示查询当前文件并且按照降序排列</p>
<p><img src="/2020/02/17/find%E6%8C%87%E4%BB%A4/Center7.jpg" alt="img"></p>
</li>
<li><p>ll -t |tac表示查询当前文件并且按照升序排列</p>
<p><img src="/2020/02/17/find%E6%8C%87%E4%BB%A4/Center8.jpg" alt="img"></p>
</li>
</ul>
<h2 id="8-查找当前目录下所有权限为755的⽂文件，并设置成777"><a href="#8-查找当前目录下所有权限为755的⽂文件，并设置成777" class="headerlink" title="8.查找当前目录下所有权限为755的⽂文件，并设置成777"></a>8.查找当前目录下所有权限为755的⽂文件，并设置成777</h2><p>分两步：</p>
<ul>
<li><p>i):修改权限命令<br> chmod 777 文件名</p>
<ul>
<li>1.chmod 775 /home/usernume </li>
<li>2.umask -p 0200</li>
<li>3.chown XXXX YYYY (XXXX 为用户名 YYYY为文件名）</li>
</ul>
</li>
<li><p>ii)权限列表</p>
<ul>
<li>-rw——-   (600) 只有所有者才有读和写的权限</li>
<li>-rw-r–r–   (644) 只有所有者才有读和写的权限，组群和其他人只有读的权限</li>
<li>-rwx——   (700) 只有所有者才有读，写，执行的权限</li>
<li>-rwxr-xr-x   (755) 只有所有者才有读，写，执行的权限，组群和其他人只有读和执行的权限</li>
<li>-rwx–x–x   (711) 只有所有者才有读，写，执行的权限，组群和其他人只有执行的权限</li>
<li>-rw-rw-rw-   (666) 每个人都有读写的权限</li>
<li>-rwxrwxrwx   (777) 每个人都有读写和执行的权限</li>
</ul>
</li>
<li><p>iii)：查找当前目录下权限为775的所有文件</p>
<p> <img src="/2020/02/17/find%E6%8C%87%E4%BB%A4/Center9.jpg" alt="img"></p>
</li>
<li><p>iiii)：将code 的权限设置为777r然后再找到权限为777的文件</p>
<p> <img src="/2020/02/17/find%E6%8C%87%E4%BB%A4/Center10.png" alt="img"></p>
</li>
</ul>

      
    </div>

    
    
    
      <footer class="post-footer">
        <div class="post-eof"></div>
      </footer>
  </article>
  
  
  

  </div>

  
  <nav class="pagination">
    <span class="page-number current">1</span><a class="page-number" href="/page/2/">2</a><a class="extend next" rel="next" href="/page/2/"><i class="fa fa-angle-right" aria-label="下一页"></i></a>
  </nav>



          </div>
          

<script>
  window.addEventListener('tabs:register', () => {
    let activeClass = CONFIG.comments.activeClass;
    if (CONFIG.comments.storage) {
      activeClass = localStorage.getItem('comments_active') || activeClass;
    }
    if (activeClass) {
      let activeTab = document.querySelector(`a[href="#comment-${activeClass}"]`);
      if (activeTab) {
        activeTab.click();
      }
    }
  });
  if (CONFIG.comments.storage) {
    window.addEventListener('tabs:click', event => {
      if (!event.target.matches('.tabs-comment .tab-content .tab-pane')) return;
      let commentClass = event.target.classList[1];
      localStorage.setItem('comments_active', commentClass);
    });
  }
</script>

        </div>
          
  
  <div class="toggle sidebar-toggle">
    <span class="toggle-line toggle-line-first"></span>
    <span class="toggle-line toggle-line-middle"></span>
    <span class="toggle-line toggle-line-last"></span>
  </div>

  <aside class="sidebar">
    <div class="sidebar-inner">

      <ul class="sidebar-nav motion-element">
        <li class="sidebar-nav-toc">
          文章目录
        </li>
        <li class="sidebar-nav-overview">
          站点概览
        </li>
      </ul>

      <!--noindex-->
      <div class="post-toc-wrap sidebar-panel">
      </div>
      <!--/noindex-->

      <div class="site-overview-wrap sidebar-panel">
        <div class="site-author motion-element" itemprop="author" itemscope itemtype="http://schema.org/Person">
  <p class="site-author-name" itemprop="name">YQ Cong</p>
  <div class="site-description" itemprop="description"></div>
</div>
<div class="site-state-wrap motion-element">
  <nav class="site-state">
      <div class="site-state-item site-state-posts">
          <a href="/archives/">
        
          <span class="site-state-item-count">13</span>
          <span class="site-state-item-name">日志</span>
        </a>
      </div>
  </nav>
</div>



      </div>

    </div>
  </aside>
  <div id="sidebar-dimmer"></div>


      </div>
    </main>

    <footer class="footer">
      <div class="footer-inner">
        

<div class="copyright">
  
  &copy; 
  <span itemprop="copyrightYear">2020</span>
  <span class="with-love">
    <i class="fa fa-user"></i>
  </span>
  <span class="author" itemprop="copyrightHolder">YQ Cong</span>
</div>
  <div class="powered-by">由 <a href="https://hexo.io/" class="theme-link" rel="noopener" target="_blank">Hexo</a> 强力驱动 v4.2.0
  </div>
  <span class="post-meta-divider">|</span>
  <div class="theme-info">主题 – <a href="https://muse.theme-next.org/" class="theme-link" rel="noopener" target="_blank">NexT.Muse</a> v7.7.1
  </div>

        








      </div>
    </footer>
  </div>

  
  
  <script color='0,0,255' opacity='0.5' zIndex='-1' count='99' src="/lib/canvas-nest/canvas-nest.min.js"></script>
  <script src="/lib/anime.min.js"></script>
  <script src="/lib/velocity/velocity.min.js"></script>
  <script src="/lib/velocity/velocity.ui.min.js"></script>

<script src="/js/utils.js"></script>

<script src="/js/motion.js"></script>


<script src="/js/schemes/muse.js"></script>


<script src="/js/next-boot.js"></script>




  















  

  

</body>
</html>
